diff --git a/src/main/java/ui/AvatarPanelDrawer.java b/src/main/java/ui/AvatarPanelDrawer.java index da3517b76a94354629f173c06d13f0d19293846b..6922d436392e031e9fc066c0b2c232c4f2f4d809 100644 --- a/src/main/java/ui/AvatarPanelDrawer.java +++ b/src/main/java/ui/AvatarPanelDrawer.java @@ -67,7 +67,7 @@ public class AvatarPanelDrawer { public AvatarPanelDrawer() { } - + public void drawPanel(AvatarSpecification avspec, AvatarDesignPanel adp, boolean useOriginalValuesFirst, boolean useOriginalPositionSMD) { // // Check Errors in AVSPEC @@ -93,6 +93,7 @@ public class AvatarPanelDrawer { return; } AvatarBDPanel abd = adp.abdp; + abd.getTdmm().setOn(false); //Find all blocks, create nested blocks starting from top left int xpos = 10; @@ -146,9 +147,11 @@ public class AvatarPanelDrawer { } drawBlockProperties(avspec, ab, bl, useOriginalValuesFirst); AvatarSMDPanel smp = adp.getAvatarSMDPanel(bl.getValue()); + smp.getTdmm().setOn(false); //TraceManager.addDev("\nBuilding state machine of block " + ab.getName() + " smd:" + ab.getStateMachine().toString() + "\n" + // "\n"); buildStateMachine(ab, bl, smp, useOriginalValuesFirst, useOriginalPositionSMD); + smp.getTdmm().setOn(true); //TraceManager.addDev("Putting in block") blockMap.put(bl.getValue().split("__")[bl.getValue().split("__").length - 1], bl); xpos += 100 * blockSizeMap.get(ab) + 200; @@ -400,6 +403,7 @@ public class AvatarPanelDrawer { } adp.getAvatarBDPanel().connectSignals(); + abd.getTdmm().setOn(true); adp.getAvatarBDPanel().repaint(); } diff --git a/src/main/java/ui/TDiagramMouseManager.java b/src/main/java/ui/TDiagramMouseManager.java index eec310d7917e5467a4980c90397ffb24b0c99520..67beb35203ada5e9bca4a5d6f6916f353fed6686 100644 --- a/src/main/java/ui/TDiagramMouseManager.java +++ b/src/main/java/ui/TDiagramMouseManager.java @@ -80,171 +80,180 @@ public class TDiagramMouseManager extends MouseAdapter {//implements MouseListen private CDElement[] cde; private boolean isOut; + private boolean isOn; + // Constructor public TDiagramMouseManager(TDiagramPanel _tdp) { tdp = _tdp; + isOn = true; + } + + public void setOn(boolean _on) { + isOn = _on; } // Mouse operations @Override public void mousePressed(MouseEvent e) { - int selected = tdp.getGUI().getTypeButtonSelected(); - - //TraceManager.addDev("Titi"); - if (e.getButton() == MouseEvent.BUTTON3) { - //TraceManager.addDev("toto"); - if (tdp.mode != TDiagramPanel.SELECTED_COMPONENTS) { - setSelection(e.getX(), e.getY()); + if (isOn) { + int selected = tdp.getGUI().getTypeButtonSelected(); + + //TraceManager.addDev("Titi"); + if (e.getButton() == MouseEvent.BUTTON3) { + //TraceManager.addDev("toto"); + if (tdp.mode != TDiagramPanel.SELECTED_COMPONENTS) { + setSelection(e.getX(), e.getY()); + } + tdp.openPopupMenu(e.getX(), e.getY()); } - tdp.openPopupMenu(e.getX(), e.getY()); - } - //TraceManager.addDev("mode = " + tdp.mode + " selected=" + selected); - - if ((tdp.mode == TDiagramPanel.SELECTED_COMPONENTS) && (e.getButton() == MouseEvent.BUTTON1) && (tdp.isInSelectedRectangle(e.getX(), e.getY()))) { - tdp.setCursor(Cursor.getPredefinedCursor(Cursor.MOVE_CURSOR)); - tdp.mode = TDiagramPanel.MOVING_SELECTED_COMPONENTS; - tdp.setMovingSelectedComponents(); - cdx = tdp.getXSelected(); - cdy = tdp.getYSelected(); - oldx = cdx; - oldy = cdy; - decx = e.getX() - cdx; - decy = e.getY() - cdy; - } + //TraceManager.addDev("mode = " + tdp.mode + " selected=" + selected); + + if ((tdp.mode == TDiagramPanel.SELECTED_COMPONENTS) && (e.getButton() == MouseEvent.BUTTON1) && (tdp.isInSelectedRectangle(e.getX(), e.getY()))) { + tdp.setCursor(Cursor.getPredefinedCursor(Cursor.MOVE_CURSOR)); + tdp.mode = TDiagramPanel.MOVING_SELECTED_COMPONENTS; + tdp.setMovingSelectedComponents(); + cdx = tdp.getXSelected(); + cdy = tdp.getYSelected(); + oldx = cdx; + oldy = cdy; + decx = e.getX() - cdx; + decy = e.getY() - cdy; + } - if ((tdp.mode == TDiagramPanel.NORMAL) && (selected == TGComponentManager.EDIT) & (e.getButton() == MouseEvent.BUTTON1)) { - setSelection(e.getX(), e.getY()); - //search if an element is pointed - boolean actionMade = false; - tgc = tdp.componentPointed(); - //TraceManager.addDev("Working on TGC=" + tgc); - if (tgc == null) { - // making a selection of components - tdp.setCursor(Cursor.getPredefinedCursor(Cursor.CROSSHAIR_CURSOR)); - tdp.mode = TDiagramPanel.SELECTING_COMPONENTS; - tdp.setSelectingComponents(e.getX(), e.getY()); - } else { - tdp.mgui.actions[TGUIAction.ACT_DELETE].setEnabled(true); - // Resize, move, or make a connector - if (tgc.isUserResizable() && ((resizeInfo = tgc.getResizeZone(e.getX(), e.getY())) != 0)) { - actionMade = true; - // Resize - //TraceManager.addDev("Resize"); - tgc.setState(TGState.RESIZING); - tgc.updateMinMaxSize(); - //tdp.setCursor(Cursor.getPredefinedCursor(Cursor.MOVE_CURSOR)); - tdp.mode = TDiagramPanel.RESIZING_COMPONENT; - cdx = tgc.getX(); - cdy = tgc.getY(); - cdwidth = tgc.getWidth(); - cdheight = tgc.getHeight(); - oldx = cdx; - oldy = cdy; - oldwidth = cdwidth; - oldheight = cdheight; - decx = e.getX() - cdx; - decy = e.getY() - cdy; - } + if ((tdp.mode == TDiagramPanel.NORMAL) && (selected == TGComponentManager.EDIT) & (e.getButton() == MouseEvent.BUTTON1)) { + setSelection(e.getX(), e.getY()); + //search if an element is pointed + boolean actionMade = false; + tgc = tdp.componentPointed(); + //TraceManager.addDev("Working on TGC=" + tgc); + if (tgc == null) { + // making a selection of components + tdp.setCursor(Cursor.getPredefinedCursor(Cursor.CROSSHAIR_CURSOR)); + tdp.mode = TDiagramPanel.SELECTING_COMPONENTS; + tdp.setSelectingComponents(e.getX(), e.getY()); + } else { + tdp.mgui.actions[TGUIAction.ACT_DELETE].setEnabled(true); + // Resize, move, or make a connector + if (tgc.isUserResizable() && ((resizeInfo = tgc.getResizeZone(e.getX(), e.getY())) != 0)) { + actionMade = true; + // Resize + //TraceManager.addDev("Resize"); + tgc.setState(TGState.RESIZING); + tgc.updateMinMaxSize(); + //tdp.setCursor(Cursor.getPredefinedCursor(Cursor.MOVE_CURSOR)); + tdp.mode = TDiagramPanel.RESIZING_COMPONENT; + cdx = tgc.getX(); + cdy = tgc.getY(); + cdwidth = tgc.getWidth(); + cdheight = tgc.getHeight(); + oldx = cdx; + oldy = cdy; + oldwidth = cdwidth; + oldheight = cdheight; + decx = e.getX() - cdx; + decy = e.getY() - cdy; + } - if (!actionMade) { - TGConnectingPoint p1; - //TraceManager.addDev("Working on TGC=" + tgc); - if (tgc.getDefaultConnector() != -1) { - p1 = tgc.getFreeTGConnectingPointAtAndCompatible(e.getX(), e.getY(), tgc.getDefaultConnector(), null); - if ((p1 != null) && (p1.isOut())) { - // add connector - actionMade = true; - tdp.setSelectedTGConnectingPoint(p1); - tdp.getGUI().actionOnButton(TGComponentManager.CONNECTOR, tgc.getDefaultConnector()); - tdp.mode = TDiagramPanel.ADDING_CONNECTOR; - tdp.addingTGConnector(); - cp = p1; - tdp.setAddingTGConnector(e.getX(), e.getY()); - //tdp.repaint(); - setSelection(p1.container.getX(), p1.container.getY()); + if (!actionMade) { + TGConnectingPoint p1; + //TraceManager.addDev("Working on TGC=" + tgc); + if (tgc.getDefaultConnector() != -1) { + p1 = tgc.getFreeTGConnectingPointAtAndCompatible(e.getX(), e.getY(), tgc.getDefaultConnector(), null); + if ((p1 != null) && (p1.isOut())) { + // add connector + actionMade = true; + tdp.setSelectedTGConnectingPoint(p1); + tdp.getGUI().actionOnButton(TGComponentManager.CONNECTOR, tgc.getDefaultConnector()); + tdp.mode = TDiagramPanel.ADDING_CONNECTOR; + tdp.addingTGConnector(); + cp = p1; + tdp.setAddingTGConnector(e.getX(), e.getY()); + //tdp.repaint(); + setSelection(p1.container.getX(), p1.container.getY()); + } } } - } - if ((!actionMade) && (tgc.isMoveable())) { - actionMade = true; - //Move - tgc.setState(TGState.MOVING); - tdp.setCursor(Cursor.getPredefinedCursor(Cursor.MOVE_CURSOR)); - tdp.mode = TDiagramPanel.MOVING_COMPONENT; - cdx = tgc.getX(); - cdy = tgc.getY(); - oldx = cdx; - oldy = cdy; - decx = e.getX() - cdx; - decy = e.getY() - cdy; - } + if ((!actionMade) && (tgc.isMoveable())) { + actionMade = true; + //Move + tgc.setState(TGState.MOVING); + tdp.setCursor(Cursor.getPredefinedCursor(Cursor.MOVE_CURSOR)); + tdp.mode = TDiagramPanel.MOVING_COMPONENT; + cdx = tgc.getX(); + cdy = tgc.getY(); + oldx = cdx; + oldy = cdy; + decx = e.getX() - cdx; + decy = e.getY() - cdy; + } - if ((!actionMade) && (tgc instanceof TGConnector)) { - // moving segment of connector ? - actionMade = true; - tgco = (TGConnector) tgc; - cde = tgco.getPointedSegment(e.getX(), e.getY()); - if (cde != null) { - if ((!tgco.isP1(cde[0])) && (!tgco.isP2(cde[1]))) { - // moving segment - tgc.setState(TGState.MOVING); - tdp.setCursor(Cursor.getPredefinedCursor(Cursor.MOVE_CURSOR)); - tdp.mode = TDiagramPanel.MOVE_CONNECTOR_SEGMENT; - oldx = cde[0].getX(); - oldy = cde[0].getY(); - decx = e.getX(); - decy = e.getY(); - } else { - if ((tgco.isP1(cde[0])) && (tgco.isP2(cde[1]))) { - // we choose one of the two -> the closer one to the click - cde = tgco.closerPToClickFirst(e.getX(), e.getY()); + if ((!actionMade) && (tgc instanceof TGConnector)) { + // moving segment of connector ? + actionMade = true; + tgco = (TGConnector) tgc; + cde = tgco.getPointedSegment(e.getX(), e.getY()); + if (cde != null) { + if ((!tgco.isP1(cde[0])) && (!tgco.isP2(cde[1]))) { + // moving segment + tgc.setState(TGState.MOVING); + tdp.setCursor(Cursor.getPredefinedCursor(Cursor.MOVE_CURSOR)); + tdp.mode = TDiagramPanel.MOVE_CONNECTOR_SEGMENT; + oldx = cde[0].getX(); + oldy = cde[0].getY(); + decx = e.getX(); + decy = e.getY(); } else { - if (tgco.isP2(cde[1])) { - cde[1] = cde[0]; - cde[0] = tgco.getTGConnectingPointP2(); + if ((tgco.isP1(cde[0])) && (tgco.isP2(cde[1]))) { + // we choose one of the two -> the closer one to the click + cde = tgco.closerPToClickFirst(e.getX(), e.getY()); + } else { + if (tgco.isP2(cde[1])) { + cde[1] = cde[0]; + cde[0] = tgco.getTGConnectingPointP2(); + } } - } - isOut = cde[0] != tgco.getTGConnectingPointP2(); - - // moving connector head - tdp.setMovingHead(e.getX(), e.getY(), cde[1].getX(), cde[1].getY()); - tgc.setState(TGState.MOVING); - tdp.setCursor(Cursor.getPredefinedCursor(Cursor.MOVE_CURSOR)); - tdp.mode = TDiagramPanel.MOVE_CONNECTOR_HEAD; - tdp.setConnectorHead(tgco); - ((TGConnectingPoint) cde[0]).setFree(true); - //TraceManager.addDev("Moving connector head"); - if (isOut) { - tdp.highlightOutAndFreeConnectingPoint(e.getX(), e.getY(), tgc.getType()); - } else { - tdp.highlightInAndFreeConnectingPoint(e.getX(), e.getY(), tgc.getType(), tgco.p1); + isOut = cde[0] != tgco.getTGConnectingPointP2(); + + // moving connector head + tdp.setMovingHead(e.getX(), e.getY(), cde[1].getX(), cde[1].getY()); + tgc.setState(TGState.MOVING); + tdp.setCursor(Cursor.getPredefinedCursor(Cursor.MOVE_CURSOR)); + tdp.mode = TDiagramPanel.MOVE_CONNECTOR_HEAD; + tdp.setConnectorHead(tgco); + ((TGConnectingPoint) cde[0]).setFree(true); + //TraceManager.addDev("Moving connector head"); + if (isOut) { + tdp.highlightOutAndFreeConnectingPoint(e.getX(), e.getY(), tgc.getType()); + } else { + tdp.highlightInAndFreeConnectingPoint(e.getX(), e.getY(), tgc.getType(), tgco.p1); + } + oldx = cde[0].getX(); + oldy = cde[0].getY(); + decx = e.getX(); + decy = e.getY(); } - oldx = cde[0].getX(); - oldy = cde[0].getY(); - decx = e.getX(); - decy = e.getY(); } } } } - } - if ((tdp.mode == TDiagramPanel.NORMAL) && (selected == TGComponentManager.CONNECTOR) & (e.getButton() == MouseEvent.BUTTON1)) { - // connector adding - // search for an selected connecting point - TGConnectingPoint p1; - p1 = tdp.getSelectedTGConnectingPoint(); - if ((p1 != null) && (p1.isOut())) { - tdp.mode = TDiagramPanel.ADDING_CONNECTOR; - tdp.addingTGConnector(); - cp = p1; - tdp.setAddingTGConnector(e.getX(), e.getY()); - tdp.repaint(); + if ((tdp.mode == TDiagramPanel.NORMAL) && (selected == TGComponentManager.CONNECTOR) & (e.getButton() == MouseEvent.BUTTON1)) { + // connector adding + // search for an selected connecting point + TGConnectingPoint p1; + p1 = tdp.getSelectedTGConnectingPoint(); + if ((p1 != null) && (p1.isOut())) { + tdp.mode = TDiagramPanel.ADDING_CONNECTOR; + tdp.addingTGConnector(); + cp = p1; + tdp.setAddingTGConnector(e.getX(), e.getY()); + tdp.repaint(); + } } } @@ -252,213 +261,217 @@ public class TDiagramMouseManager extends MouseAdapter {//implements MouseListen @Override public void mouseReleased(MouseEvent e) { + if (isOn) { - if (tdp.mode == TDiagramPanel.MOVING_SELECTED_COMPONENTS) { - tdp.mode = TDiagramPanel.SELECTED_COMPONENTS; - tdp.setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR)); - tdp.setStopMovingSelectedComponents(); - if ((oldx != tdp.getXSelected()) || (oldy != tdp.getYSelected())) { - tdp.getGUI().changeMade(tdp, TDiagramPanel.MOVE_COMPONENT); + if (tdp.mode == TDiagramPanel.MOVING_SELECTED_COMPONENTS) { + tdp.mode = TDiagramPanel.SELECTED_COMPONENTS; + tdp.setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR)); + tdp.setStopMovingSelectedComponents(); + if ((oldx != tdp.getXSelected()) || (oldy != tdp.getYSelected())) { + tdp.getGUI().changeMade(tdp, TDiagramPanel.MOVE_COMPONENT); + } + tdp.repaint(); } - tdp.repaint(); - } - if (tdp.mode == TDiagramPanel.MOVING_COMPONENT) { - tgc.setState(TGState.POINTED); - tdp.mode = TDiagramPanel.NORMAL; - tdp.setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR)); - if ((oldx != tgc.getX()) || (oldy != tgc.getY())) { - //TraceManager.addDev("change2"); - tdp.getGUI().changeMade(tdp, TDiagramPanel.MOVE_COMPONENT); + if (tdp.mode == TDiagramPanel.MOVING_COMPONENT) { + tgc.setState(TGState.POINTED); + tdp.mode = TDiagramPanel.NORMAL; + tdp.setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR)); + if ((oldx != tgc.getX()) || (oldy != tgc.getY())) { + //TraceManager.addDev("change2"); + tdp.getGUI().changeMade(tdp, TDiagramPanel.MOVE_COMPONENT); + } + setSelection(e.getX(), e.getY()); } - setSelection(e.getX(), e.getY()); - } - if (tdp.mode == TDiagramPanel.RESIZING_COMPONENT) { - tgc.setState(TGState.POINTED); - tdp.mode = TDiagramPanel.NORMAL; - tdp.setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR)); - if ((oldx != tgc.getX()) || (oldy != tgc.getY()) || (oldwidth != tgc.getWidth()) || (oldheight != tgc.getHeight())) { - //TraceManager.addDev("change2"); - tdp.getGUI().changeMade(tdp, TDiagramPanel.MOVE_COMPONENT); + if (tdp.mode == TDiagramPanel.RESIZING_COMPONENT) { + tgc.setState(TGState.POINTED); + tdp.mode = TDiagramPanel.NORMAL; + tdp.setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR)); + if ((oldx != tgc.getX()) || (oldy != tgc.getY()) || (oldwidth != tgc.getWidth()) || (oldheight != tgc.getHeight())) { + //TraceManager.addDev("change2"); + tdp.getGUI().changeMade(tdp, TDiagramPanel.MOVE_COMPONENT); + } + setSelection(e.getX(), e.getY()); } - setSelection(e.getX(), e.getY()); - } - if (tdp.mode == TDiagramPanel.SELECTING_COMPONENTS) { - tdp.endSelectComponents(); - tdp.setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR)); - tdp.repaint(); - } + if (tdp.mode == TDiagramPanel.SELECTING_COMPONENTS) { + tdp.endSelectComponents(); + tdp.setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR)); + tdp.repaint(); + } - if (tdp.mode == TDiagramPanel.MOVE_CONNECTOR_SEGMENT) { - tgc.setState(TGState.POINTED); - tdp.mode = TDiagramPanel.NORMAL; - tdp.setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR)); - if ((oldx != cde[0].getX()) || (oldy != cde[0].getY())) { - tdp.getGUI().changeMade(tdp, TDiagramPanel.MOVE_COMPONENT); + if (tdp.mode == TDiagramPanel.MOVE_CONNECTOR_SEGMENT) { + tgc.setState(TGState.POINTED); + tdp.mode = TDiagramPanel.NORMAL; + tdp.setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR)); + if ((oldx != cde[0].getX()) || (oldy != cde[0].getY())) { + tdp.getGUI().changeMade(tdp, TDiagramPanel.MOVE_COMPONENT); + } } - } - if (tdp.mode == TDiagramPanel.MOVE_CONNECTOR_HEAD) { - tgc.setState(TGState.POINTED); - tdp.mode = TDiagramPanel.NORMAL; - TGConnectingPoint p; - p = tdp.getSelectedTGConnectingPoint(); - if (p != null) { - ((TGConnectingPoint) cde[0]).setFree(true); - p.setFree(false); - if (isOut) { - tgco.setP1(p); + if (tdp.mode == TDiagramPanel.MOVE_CONNECTOR_HEAD) { + tgc.setState(TGState.POINTED); + tdp.mode = TDiagramPanel.NORMAL; + TGConnectingPoint p; + p = tdp.getSelectedTGConnectingPoint(); + if (p != null) { + ((TGConnectingPoint) cde[0]).setFree(true); + p.setFree(false); + if (isOut) { + tgco.setP1(p); + } else { + tgco.setP2(p); + } + tdp.getGUI().changeMade(tdp, TDiagramPanel.MOVE_CONNECTOR); + if (tgco instanceof SpecificActionAfterMove) { + ((SpecificActionAfterMove) tgco).specificActionAfterMove(); + } } else { - tgco.setP2(p); + ((TGConnectingPoint) cde[0]).setFree(false); } - tdp.getGUI().changeMade(tdp, TDiagramPanel.MOVE_CONNECTOR); - if (tgco instanceof SpecificActionAfterMove) { - ((SpecificActionAfterMove) tgco).specificActionAfterMove(); - } - } else { - ((TGConnectingPoint) cde[0]).setFree(false); + tdp.setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR)); + tdp.repaint(); } - tdp.setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR)); - tdp.repaint(); } } @Override public void mouseClicked(MouseEvent e) { - //TraceManager.addDev("MouseClick: " + e.getClickCount()); + if (isOn) { + //TraceManager.addDev("MouseClick: " + e.getClickCount()); - //open a Search Dialog with seleted component's value - if ((e.getButton() == MouseEvent.BUTTON1) && e.isAltDown()) { - byte info = tdp.hoveredComponent(e.getX(), e.getY()); - if (info > 1) { - tgc = tdp.componentHovered(); - String search = tgc.getValue(); + //open a Search Dialog with seleted component's value + if ((e.getButton() == MouseEvent.BUTTON1) && e.isAltDown()) { + byte info = tdp.hoveredComponent(e.getX(), e.getY()); + if (info > 1) { + tgc = tdp.componentHovered(); + String search = tgc.getValue(); - if (tdp.mgui.searchBox == null) { - tdp.mgui.searchBox = new JDialogSearchBox(tdp.getGUI().getFrame(), "Search Box", selectedMultiComponents, this); - } else { - if (tdp.mgui.searchBox.isShowing()) { - tdp.mgui.searchBox.addValueListKeyword(search); - tdp.mgui.searchBox.setVisible(true); - } else { - tdp.mgui.searchBox = null; + if (tdp.mgui.searchBox == null) { tdp.mgui.searchBox = new JDialogSearchBox(tdp.getGUI().getFrame(), "Search Box", selectedMultiComponents, this); + } else { + if (tdp.mgui.searchBox.isShowing()) { + tdp.mgui.searchBox.addValueListKeyword(search); + tdp.mgui.searchBox.setVisible(true); + } else { + tdp.mgui.searchBox = null; + tdp.mgui.searchBox = new JDialogSearchBox(tdp.getGUI().getFrame(), "Search Box", selectedMultiComponents, this); + } } - } + } } - } - //author:Huy TRUONG - //add component's value into list by clicking on component and holding Ctrl - if ((e.getButton() == MouseEvent.BUTTON1) && e.isControlDown()) { - tgc = tdp.componentPointed(); + //author:Huy TRUONG + //add component's value into list by clicking on component and holding Ctrl + if ((e.getButton() == MouseEvent.BUTTON1) && e.isControlDown()) { + tgc = tdp.componentPointed(); - //set text of seach field on menubar - tdp.mgui.getMainBar().setSearchText(tgc.getValue()); + //set text of seach field on menubar + tdp.mgui.getMainBar().setSearchText(tgc.getValue()); - if (null == tdp.mgui.searchBox || !tdp.mgui.searchBox.isShowing()) { - selectedMultiComponents.add(tgc.getValue()); - //TraceManager.addDev("Selected components: " + selectedMultiComponents.toString()); - } else { - if (tdp.mgui.searchBox.isShowing()) { - tdp.mgui.searchBox.addValueListKeyword(tgc.getValue()); - selectedMultiComponents.clear(); - } else { + if (null == tdp.mgui.searchBox || !tdp.mgui.searchBox.isShowing()) { selectedMultiComponents.add(tgc.getValue()); - tdp.mgui.searchBox.removeValueListKeyword(); + //TraceManager.addDev("Selected components: " + selectedMultiComponents.toString()); + } else { + if (tdp.mgui.searchBox.isShowing()) { + tdp.mgui.searchBox.addValueListKeyword(tgc.getValue()); + selectedMultiComponents.clear(); + } else { + selectedMultiComponents.add(tgc.getValue()); + tdp.mgui.searchBox.removeValueListKeyword(); + } } - } - } else - selectedMultiComponents.clear(); - // clear the list when release Ctrl and click + } else + selectedMultiComponents.clear(); + // clear the list when release Ctrl and click - //-- + //-- - if (tdp.mode == TDiagramPanel.SELECTED_COMPONENTS) { - if ((e.getClickCount() == 1) && (e.getButton() == MouseEvent.BUTTON1)) { - tdp.mode = TDiagramPanel.NORMAL; - tdp.mgui.setMode(MainGUI.CUTCOPY_KO); - tdp.mgui.setMode(MainGUI.EXPORT_LIB_KO); - tdp.getMainGUI().actions[TGUIAction.MOVE_ENABLED].setEnabled(false); - tdp.unselectSelectedComponents(); - tdp.repaint(); + if (tdp.mode == TDiagramPanel.SELECTED_COMPONENTS) { + if ((e.getClickCount() == 1) && (e.getButton() == MouseEvent.BUTTON1)) { + tdp.mode = TDiagramPanel.NORMAL; + tdp.mgui.setMode(MainGUI.CUTCOPY_KO); + tdp.mgui.setMode(MainGUI.EXPORT_LIB_KO); + tdp.getMainGUI().actions[TGUIAction.MOVE_ENABLED].setEnabled(false); + tdp.unselectSelectedComponents(); + tdp.repaint(); + } + return; } - return; - } - int selected = tdp.getGUI().getTypeButtonSelected(); - - if ((selected == TGComponentManager.EDIT) && (e.getClickCount() == 2) && (e.getButton() == MouseEvent.BUTTON1)) { - //TraceManager.addDev("Double click"); - tgc = tdp.componentPointed(); - if (tgc != null) { - //TraceManager.addDev("Component pointed: " + tgc.getName()); - if (tgc.doubleClick(tdp.getGUI().getFrame(), e.getX(), e.getY())) { - //TraceManager.addDev("Change4"); - tdp.getGUI().changeMade(tdp, TDiagramPanel.CHANGE_VALUE_COMPONENT); - //TraceManager.addDev("repaint in mouse manager"); - tdp.repaint(); + int selected = tdp.getGUI().getTypeButtonSelected(); + + if ((selected == TGComponentManager.EDIT) && (e.getClickCount() == 2) && (e.getButton() == MouseEvent.BUTTON1)) { + //TraceManager.addDev("Double click"); + tgc = tdp.componentPointed(); + if (tgc != null) { + //TraceManager.addDev("Component pointed: " + tgc.getName()); + if (tgc.doubleClick(tdp.getGUI().getFrame(), e.getX(), e.getY())) { + //TraceManager.addDev("Change4"); + tdp.getGUI().changeMade(tdp, TDiagramPanel.CHANGE_VALUE_COMPONENT); + //TraceManager.addDev("repaint in mouse manager"); + tdp.repaint(); + } } } - } - if ((selected == TGComponentManager.CONNECTOR) && (e.getClickCount() == 1) && (e.getButton() == MouseEvent.BUTTON1)) { - // if there is a close connecting point - if (tdp.mode == TDiagramPanel.ADDING_CONNECTOR) { - TGConnectingPoint p1; - p1 = tdp.getSelectedTGConnectingPoint(); - if (p1 != null) { - if ((p1 != cp) && (p1.isIn())) { - tdp.finishAddingConnector(p1); - tdp.mode = TDiagramPanel.NORMAL; - tdp.getGUI().setEditMode(); - //TraceManager.addDev("Change3"); - tdp.getGUI().changeMade(tdp, TDiagramPanel.NEW_CONNECTOR); + if ((selected == TGComponentManager.CONNECTOR) && (e.getClickCount() == 1) && (e.getButton() == MouseEvent.BUTTON1)) { + // if there is a close connecting point + if (tdp.mode == TDiagramPanel.ADDING_CONNECTOR) { + TGConnectingPoint p1; + p1 = tdp.getSelectedTGConnectingPoint(); + if (p1 != null) { + if ((p1 != cp) && (p1.isIn())) { + tdp.finishAddingConnector(p1); + tdp.mode = TDiagramPanel.NORMAL; + tdp.getGUI().setEditMode(); + //TraceManager.addDev("Change3"); + tdp.getGUI().changeMade(tdp, TDiagramPanel.NEW_CONNECTOR); + tdp.repaint(); + } + } else { + // no close connecting point -> adding point + tdp.addPointToTGConnector(e.getX(), e.getY()); tdp.repaint(); } + } + } + + if ((selected == TGComponentManager.CONNECTOR) && (e.getClickCount() == 2) && (e.getButton() == MouseEvent.BUTTON1)) { + if (tdp.mode == TDiagramPanel.ADDING_CONNECTOR) { + tdp.mode = TDiagramPanel.NORMAL; + tdp.stopAddingConnector(true); + tdp.getGUI().setEditMode(); + tdp.repaint(); } else { - // no close connecting point -> adding point - tdp.addPointToTGConnector(e.getX(), e.getY()); + tdp.getGUI().setEditMode(); tdp.repaint(); } } - } - if ((selected == TGComponentManager.CONNECTOR) && (e.getClickCount() == 2) && (e.getButton() == MouseEvent.BUTTON1)) { - if (tdp.mode == TDiagramPanel.ADDING_CONNECTOR) { - tdp.mode = TDiagramPanel.NORMAL; - tdp.stopAddingConnector(true); - tdp.getGUI().setEditMode(); - tdp.repaint(); - } else { + if ((selected == TGComponentManager.COMPONENT) && (e.getButton() == MouseEvent.BUTTON1)) { + TGComponent comp = tdp.addComponent(e.getX(), e.getY(), true); + tdp.autoConnect(comp); tdp.getGUI().setEditMode(); + //TraceManager.addDev("change1"); + tdp.getGUI().changeMade(tdp, TDiagramPanel.NEW_COMPONENT); tdp.repaint(); } - } - if ((selected == TGComponentManager.COMPONENT) && (e.getButton() == MouseEvent.BUTTON1)) { - TGComponent comp = tdp.addComponent(e.getX(), e.getY(), true); - tdp.autoConnect(comp); - tdp.getGUI().setEditMode(); - //TraceManager.addDev("change1"); - tdp.getGUI().changeMade(tdp, TDiagramPanel.NEW_COMPONENT); - tdp.repaint(); - } - - //If one click is done for selection - if ((selected == TGComponentManager.EDIT) && (e.getClickCount() == 1) && (e.getButton() == MouseEvent.BUTTON1)) { - setSelection(e.getX(), e.getY()); - if (tdp.select) - tdp.mgui.actions[TGUIAction.ACT_DELETE].setEnabled(true); - else - tdp.mgui.actions[TGUIAction.ACT_DELETE].setEnabled(false); + //If one click is done for selection + if ((selected == TGComponentManager.EDIT) && (e.getClickCount() == 1) && (e.getButton() == MouseEvent.BUTTON1)) { + setSelection(e.getX(), e.getY()); + if (tdp.select) + tdp.mgui.actions[TGUIAction.ACT_DELETE].setEnabled(true); + else + tdp.mgui.actions[TGUIAction.ACT_DELETE].setEnabled(false); + } } } @@ -470,36 +483,38 @@ public class TDiagramMouseManager extends MouseAdapter {//implements MouseListen * @author Fabien Tessier */ public void setSelection(int x, int y) { - tdp.requestFocusInWindow(); - tdp.unselectClickSelectedComponents(); //Unselect all components - tgc = null; - for (TGComponent tgc : tdp.componentList) { - TGComponent tgcTmp = tgc.isOnMeHL(x, y); - if (tgcTmp != null && !tgcTmp.hidden) { //Component clicked - this.tgc = tgcTmp; - break; + if (isOn) { + tdp.requestFocusInWindow(); + tdp.unselectClickSelectedComponents(); //Unselect all components + tgc = null; + for (TGComponent tgc : tdp.componentList) { + TGComponent tgcTmp = tgc.isOnMeHL(x, y); + if (tgcTmp != null && !tgcTmp.hidden) { //Component clicked + this.tgc = tgcTmp; + break; + } } - } - if (tgc != null) { //A component has been clicked - if (!(tgc instanceof TGConnector) && tgc.moveable) - tdp.getGUI().setMode(MainGUI.COMPONENT_SELECTED); - else + if (tgc != null) { //A component has been clicked + if (!(tgc instanceof TGConnector) && tgc.moveable) + tdp.getGUI().setMode(MainGUI.COMPONENT_SELECTED); + else + tdp.getGUI().setMode(MainGUI.OPENED); + + //lastSelectedComponent = tgc; + tdp.setSelect(true); + tgc.singleClick(tdp.getGUI().getFrame(), x, y); + } else { tdp.getGUI().setMode(MainGUI.OPENED); + tdp.setSelect(false); + // lastSelectedComponent = null; + tdp.componentPointed = null; + } - //lastSelectedComponent = tgc; - tdp.setSelect(true); - tgc.singleClick(tdp.getGUI().getFrame(), x, y); - } else { - tdp.getGUI().setMode(MainGUI.OPENED); - tdp.setSelect(false); - // lastSelectedComponent = null; - tdp.componentPointed = null; - } - - // Issue #105: sending a change event prevents the undo from working - tdp.getGUI().changeMade(tdp, TDiagramPanel.SELECT_COMPONENT); + // Issue #105: sending a change event prevents the undo from working + tdp.getGUI().changeMade(tdp, TDiagramPanel.SELECT_COMPONENT); // tdp.getGUI().changeMade(tdp, TDiagramPanel.CHANGE_VALUE_COMPONENT); - tdp.repaint(); + tdp.repaint(); + } } public void stopAddingConnector() { @@ -543,106 +558,111 @@ public class TDiagramMouseManager extends MouseAdapter {//implements MouseListen @Override public void mouseMoved(MouseEvent e) { - //TraceManager.addDev("Mouse moved x=" + e.getX() + " y=" + e.getY()); - tdp.currentX = e.getX(); - tdp.currentY = e.getY(); + if (isOn) { + //TraceManager.addDev("Mouse moved x=" + e.getX() + " y=" + e.getY()); + tdp.currentX = e.getX(); + tdp.currentY = e.getY(); - int selected = tdp.getGUI().getTypeButtonSelected(); + int selected = tdp.getGUI().getTypeButtonSelected(); - if (tdp.mode == TDiagramPanel.SELECTED_COMPONENTS) { - if (tdp.showSelectionZone(e.getX(), e.getY())) { - tdp.repaint(); + if (tdp.mode == TDiagramPanel.SELECTED_COMPONENTS) { + if (tdp.showSelectionZone(e.getX(), e.getY())) { + tdp.repaint(); + } } - } - if ((tdp.mode == TDiagramPanel.NORMAL) && (selected == TGComponentManager.EDIT)) { - //TraceManager.addDev("Pointed components?"); - byte info = 0; - if (!tdp.isSelect()) - info = tdp.highlightComponent(e.getX(), e.getY()); - if (info > 1 || tdp.isSelect()) { - tgc = tdp.componentPointed(); - //TraceManager.addDev("Components pointed: " + tgc); - if (tgc.isUserResizable()) { - setCursor(tgc.getResizeZone(e.getX(), e.getY())); + if ((tdp.mode == TDiagramPanel.NORMAL) && (selected == TGComponentManager.EDIT)) { + //TraceManager.addDev("Pointed components?"); + byte info = 0; + if (!tdp.isSelect()) + info = tdp.highlightComponent(e.getX(), e.getY()); + if (info > 1 || tdp.isSelect()) { + tgc = tdp.componentPointed(); + //TraceManager.addDev("Components pointed: " + tgc); + if (tgc.isUserResizable()) { + setCursor(tgc.getResizeZone(e.getX(), e.getY())); + } else { + tdp.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR)); + } } else { - tdp.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR)); + tdp.setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR)); + } + //TraceManager.addDev("info=" + info + " X=" + tdp.currentX + " Y=" + tdp.currentY); + if ((info == 1) || (info == 3)) { + tdp.updateJavaCode(); + tdp.repaint(); + } else if (info == 2) { + if (tgc.hasAnUpdateOnPointedComponent()) { + //TraceManager.addDev("has an update..."); + tdp.repaint(); + } else { + //TraceManager.addDev("No update..."); + } } - } else { - tdp.setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR)); } - //TraceManager.addDev("info=" + info + " X=" + tdp.currentX + " Y=" + tdp.currentY); - if ((info == 1) || (info == 3)) { - tdp.updateJavaCode(); - tdp.repaint(); - } else if (info == 2) { - if (tgc.hasAnUpdateOnPointedComponent()) { - //TraceManager.addDev("has an update..."); + + if ((selected == TGComponentManager.CONNECTOR) && (tdp.mode == TDiagramPanel.NORMAL)) { // is connectingPointShow selected + if (tdp.highlightOutAndFreeConnectingPoint(e.getX(), e.getY(), tdp.getMGUI().getIdButtonSelected())) { tdp.repaint(); - } else { - //TraceManager.addDev("No update..."); } } - } - if ((selected == TGComponentManager.CONNECTOR) && (tdp.mode == TDiagramPanel.NORMAL)) { // is connectingPointShow selected - if (tdp.highlightOutAndFreeConnectingPoint(e.getX(), e.getY(), tdp.getMGUI().getIdButtonSelected())) { + if ((selected == TGComponentManager.CONNECTOR) && (tdp.mode == TDiagramPanel.ADDING_CONNECTOR)) { + tdp.highlightInAndFreeConnectingPoint(e.getX(), e.getY(), tdp.getMGUI().getIdButtonSelected(), cp); + tdp.setAddingTGConnector(e.getX(), e.getY()); tdp.repaint(); } } - - if ((selected == TGComponentManager.CONNECTOR) && (tdp.mode == TDiagramPanel.ADDING_CONNECTOR)) { - tdp.highlightInAndFreeConnectingPoint(e.getX(), e.getY(), tdp.getMGUI().getIdButtonSelected(), cp); - tdp.setAddingTGConnector(e.getX(), e.getY()); - tdp.repaint(); - } } @Override public void mouseDragged(MouseEvent e) { - //TraceManager.addDev("Mode=" +tdp.mode); + if (isOn) { - if (tdp.mode == TDiagramPanel.MOVING_COMPONENT) { - tgc.setMoveCd(e.getX() - decx, e.getY() - decy); - tdp.repaint(); - return; - } + //TraceManager.addDev("Mode=" +tdp.mode); - if (tdp.mode == TDiagramPanel.RESIZING_COMPONENT) { - applyResize(e.getX(), e.getY()); - tdp.repaint(); - return; - } + if (tdp.mode == TDiagramPanel.MOVING_COMPONENT) { + tgc.setMoveCd(e.getX() - decx, e.getY() - decy); + tdp.repaint(); + return; + } - if (tdp.mode == TDiagramPanel.MOVING_SELECTED_COMPONENTS) { - tdp.moveSelected(e.getX() - decx, e.getY() - decy); - tdp.repaint(); - return; - } + if (tdp.mode == TDiagramPanel.RESIZING_COMPONENT) { + applyResize(e.getX(), e.getY()); + tdp.repaint(); + return; + } - if (tdp.mode == TDiagramPanel.SELECTING_COMPONENTS) { - tdp.updateSelectingComponents(e.getX(), e.getY()); - tdp.repaint(); + if (tdp.mode == TDiagramPanel.MOVING_SELECTED_COMPONENTS) { + tdp.moveSelected(e.getX() - decx, e.getY() - decy); + tdp.repaint(); + return; + } - return; - } + if (tdp.mode == TDiagramPanel.SELECTING_COMPONENTS) { + tdp.updateSelectingComponents(e.getX(), e.getY()); + tdp.repaint(); - if (tdp.mode == TDiagramPanel.MOVE_CONNECTOR_SEGMENT) { - cde[0].setCd(cde[0].getX() + e.getX() - decx, cde[0].getY() + e.getY() - decy); - cde[1].setCd(cde[1].getX() + e.getX() - decx, cde[1].getY() + e.getY() - decy); - decx = e.getX(); - decy = e.getY(); - tdp.repaint(); - } + return; + } - if (tdp.mode == TDiagramPanel.MOVE_CONNECTOR_HEAD) { - tdp.setMovingHead(e.getX(), e.getY(), cde[1].getX(), cde[1].getY()); - if (isOut) { - tdp.highlightOutAndFreeConnectingPoint(e.getX(), e.getY(), tgc.getType()); - } else { - tdp.highlightInAndFreeConnectingPoint(e.getX(), e.getY(), tgc.getType(), cp); + if (tdp.mode == TDiagramPanel.MOVE_CONNECTOR_SEGMENT) { + cde[0].setCd(cde[0].getX() + e.getX() - decx, cde[0].getY() + e.getY() - decy); + cde[1].setCd(cde[1].getX() + e.getX() - decx, cde[1].getY() + e.getY() - decy); + decx = e.getX(); + decy = e.getY(); + tdp.repaint(); + } + + if (tdp.mode == TDiagramPanel.MOVE_CONNECTOR_HEAD) { + tdp.setMovingHead(e.getX(), e.getY(), cde[1].getX(), cde[1].getY()); + if (isOut) { + tdp.highlightOutAndFreeConnectingPoint(e.getX(), e.getY(), tgc.getType()); + } else { + tdp.highlightInAndFreeConnectingPoint(e.getX(), e.getY(), tgc.getType(), cp); + } + tdp.repaint(); } - tdp.repaint(); } }