1 package net.mograsim.logic.model.editor.states;
3 import org.eclipse.swt.SWT;
4 import org.eclipse.swt.widgets.Display;
5 import org.eclipse.swt.widgets.Shell;
7 import net.haspamelodica.swt.helper.swtobjectwrappers.Point;
8 import net.haspamelodica.swt.helper.zoomablecanvas.ZoomableCanvas.ZoomedRenderer;
9 import net.mograsim.logic.model.editor.Editor;
10 import net.mograsim.logic.model.editor.handles.PinHandle;
11 import net.mograsim.logic.model.editor.handles.Handle.HandleClickInfo;
13 public class CreateWireState extends EditorState
15 private final PinHandle origin;
16 private double mX, mY;
17 private ZoomedRenderer drawLine;
19 public CreateWireState(Editor session, StateManager manager, PinHandle origin)
21 super(session, manager);
23 mX = origin.getCenterX();
24 mY = origin.getCenterY();
28 public void mouseMoved(double x, double y)
32 editor.gui.logicCanvas.redraw();
38 editor.getSelection().clear();
42 gc.setForeground(Display.getCurrent().getSystemColor(SWT.COLOR_GREEN));
43 gc.drawLine((int) origin.getCenterX(), (int) origin.getCenterY(), (int) mX, (int) mY);
45 editor.gui.logicCanvas.addZoomedRenderer(drawLine);
46 editor.gui.logicCanvas.redraw();
52 editor.gui.logicCanvas.removeZoomedRenderer(drawLine);
53 editor.gui.logicCanvas.redraw();
57 public boolean clickedHandle(HandleClickInfo handleClickInfo)
59 switch (handleClickInfo.clicked.getType())
65 editor.addWire(origin, (PinHandle) handleClickInfo.clicked);
67 catch (IllegalArgumentException e)
69 Shell tmp = new Shell(Display.getCurrent());
70 editor.dialogManager.openWarningDialog("Warning!", e.getMessage());
81 public void clicked(Point clicked, int stateMask)
83 manager.setState(new SelectionState(editor, manager));