You are viewing a plain text version of this content. The canonical link for it is here.
Posted to jmeter-dev@jakarta.apache.org by se...@apache.org on 2004/09/26 16:30:20 UTC
cvs commit: jakarta-jmeter/src/core/org/apache/jmeter/gui/action DragNDrop.java
sebb 2004/09/26 07:30:20
Modified: src/core/org/apache/jmeter/gui/action Tag: rel-2_0
DragNDrop.java
Log:
Only remove nodes if a valid action is detected
Don't allow nodes to be moved to unsuitable parent
Revision Changes Path
No revision
No revision
1.4.2.1 +49 -14 jakarta-jmeter/src/core/org/apache/jmeter/gui/action/DragNDrop.java
Index: DragNDrop.java
===================================================================
RCS file: /home/cvs/jakarta-jmeter/src/core/org/apache/jmeter/gui/action/DragNDrop.java,v
retrieving revision 1.4
retrieving revision 1.4.2.1
diff -u -r1.4 -r1.4.2.1
--- DragNDrop.java 14 Feb 2004 03:34:28 -0000 1.4
+++ DragNDrop.java 26 Sep 2004 14:30:20 -0000 1.4.2.1
@@ -22,9 +22,14 @@
import java.util.HashSet;
import java.util.Set;
+import org.apache.jmeter.control.Controller;
import org.apache.jmeter.gui.GuiPackage;
import org.apache.jmeter.gui.tree.JMeterTreeListener;
import org.apache.jmeter.gui.tree.JMeterTreeNode;
+import org.apache.jmeter.samplers.Sampler;
+import org.apache.jmeter.testelement.TestElement;
+import org.apache.jmeter.testelement.TestPlan;
+import org.apache.jmeter.testelement.WorkBench;
/**
* @author mstover
@@ -32,9 +37,9 @@
*/
public class DragNDrop extends AbstractAction
{
- public final static String ADD = "drag_n_drop.add";
- public final static String INSERT_BEFORE = "drag_n_drop.insert_before";
- public final static String INSERT_AFTER = "drag_n_drop.insert_after";
+ public final static String ADD = "drag_n_drop.add";//$NON-NLS-1$
+ public final static String INSERT_BEFORE = "drag_n_drop.insert_before";//$NON-NLS-1$
+ public final static String INSERT_AFTER = "drag_n_drop.insert_after";//$NON-NLS-1$
private static Set commands = new HashSet();
static {
@@ -52,9 +57,18 @@
JMeterTreeNode[] draggedNodes = guiPackage.getTreeListener().getDraggedNodes();
JMeterTreeListener treeListener = guiPackage.getTreeListener();
JMeterTreeNode currentNode = treeListener.getCurrentNode();
- removeNodesFromParents(draggedNodes);
- if (ADD.equals(action))
+ JMeterTreeNode parentNode =
+ (JMeterTreeNode) currentNode.getParent();
+ TestElement te = currentNode.getTestElement();
+ if (te instanceof TestPlan || te instanceof WorkBench)
{
+ parentNode=null; // So elements can only be added as children
+ }
+ //System.out.println(action+" "+te.getClass().getName());
+
+ if (ADD.equals(action) && canAddTo(currentNode))
+ {
+ removeNodesFromParents(draggedNodes);
for (int i = 0; i < draggedNodes.length; i++)
{
GuiPackage.getInstance().getTreeModel().insertNodeInto(
@@ -63,12 +77,11 @@
currentNode.getChildCount());
}
}
- else if (INSERT_BEFORE.equals(action))
+ else if (INSERT_BEFORE.equals(action) && canAddTo(parentNode))
{
+ removeNodesFromParents(draggedNodes);
for (int i = 0; i < draggedNodes.length; i++)
{
- JMeterTreeNode parentNode =
- (JMeterTreeNode) currentNode.getParent();
int index = parentNode.getIndex(currentNode);
GuiPackage.getInstance().getTreeModel().insertNodeInto(
draggedNodes[i],
@@ -76,12 +89,11 @@
index);
}
}
- else if (INSERT_AFTER.equals(action))
+ else if (INSERT_AFTER.equals(action) && canAddTo(parentNode))
{
+ removeNodesFromParents(draggedNodes);
for (int i = 0; i < draggedNodes.length; i++)
{
- JMeterTreeNode parentNode =
- (JMeterTreeNode) currentNode.getParent();
int index = parentNode.getIndex(currentNode) + 1;
GuiPackage.getInstance().getTreeModel().insertNodeInto(
draggedNodes[i],
@@ -92,7 +104,30 @@
GuiPackage.getInstance().getMainFrame().repaint();
}
- protected void removeNodesFromParents(JMeterTreeNode[] nodes)
+ /**
+ * Determine whether or not dragged nodes can be added to this parent.
+ *
+ * TODO tighten rules
+ * TODO move to MenuFactory?
+ * @param parentNode
+ * @return whether it is OK to add the dragged nodes to this parent
+ */
+ private boolean canAddTo(JMeterTreeNode parentNode) {
+ if (null==parentNode) return false;
+ TestElement te = parentNode.getTestElement();
+ //System.out.println("Add to: "+te.getClass().getName());
+ if (te instanceof Controller)
+ return true;
+ if (te instanceof Sampler)
+ return true;
+ if (te instanceof WorkBench)
+ return true;
+ if (te instanceof TestPlan)
+ return true;
+ return false;
+ }
+
+ protected void removeNodesFromParents(JMeterTreeNode[] nodes)
{
for (int i = 0; i < nodes.length; i++)
{
---------------------------------------------------------------------
To unsubscribe, e-mail: jmeter-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: jmeter-dev-help@jakarta.apache.org