Fixed a bug in Am2900; created dlatch8/80; relayouted some components
[Mograsim.git] / net.mograsim.logic.model.editor / src / net / mograsim / logic / model / editor / states / SelectionState.java
index 446635e..baa2eff 100644 (file)
@@ -7,14 +7,15 @@ import net.haspamelodica.swt.helper.swtobjectwrappers.Point;
 import net.haspamelodica.swt.helper.zoomablecanvas.ZoomableCanvas.ZoomedRenderer;
 import net.mograsim.logic.model.editor.Editor;
 import net.mograsim.logic.model.editor.Selection;
-import net.mograsim.logic.model.editor.DialogManager.InteractiveDialog;
 import net.mograsim.logic.model.editor.handles.Handle;
 import net.mograsim.logic.model.editor.handles.PinHandle;
 import net.mograsim.logic.model.editor.handles.WireHandle;
 import net.mograsim.logic.model.editor.handles.Handle.HandleClickInfo;
 import net.mograsim.logic.model.editor.handles.WireHandle.WireHandleClickInfo;
+import net.mograsim.logic.model.editor.ui.DialogManager;
 import net.mograsim.logic.model.model.wires.MovablePin;
 import net.mograsim.logic.model.model.wires.Pin;
+import net.mograsim.logic.model.model.wires.PinUsage;
 
 public class SelectionState extends EditorState
 {
@@ -36,7 +37,7 @@ public class SelectionState extends EditorState
        @Override
        public void add()
        {
-               Point curserPos = editor.getWorldMousePosition();
+               Point curserPos = editor.userInput.getWorldMousePosition();
                editor.addComponent(curserPos.x, curserPos.y);
        }
 
@@ -55,7 +56,7 @@ public class SelectionState extends EditorState
        @Override
        public void paste()
        {
-               Point curserPos = editor.getWorldMousePosition();
+               Point curserPos = editor.userInput.getWorldMousePosition();
                editor.paste(curserPos.x, curserPos.y);
        }
 
@@ -98,19 +99,23 @@ public class SelectionState extends EditorState
                editor.getSelection().clear();
                if ((stateMask & SWT.ALT) == SWT.ALT)
                {
-                       InteractiveDialog pinAdd = new InteractiveDialog("Add Pin...", "Add", "Cancel", "Name", "Logic Width");
-                       pinAdd.open();
-                       if (pinAdd.getState().equals(InteractiveDialog.InteractiveDialogState.ACCEPTED))
+                       String[] result = DialogManager.openMultiTextDialog("Add Pin...", "Add", "Cancel", "Name", "Logic Width", "Usage");
+                       if (result != null)
                        {
                                try
                                {
-                                       Pin p = editor.toBeEdited.addSubmodelInterface(new MovablePin(editor.toBeEdited, pinAdd.getText(),
-                                                       Integer.parseInt(pinAdd.getText(1)), clicked.x, clicked.y));
+                                       Pin p = editor.toBeEdited.addSubmodelInterface(new MovablePin(editor.getSubmodel(), editor.toBeEdited, result[0],
+                                                       Integer.parseInt(result[1]), PinUsage.valueOf(result[2]), clicked.x, clicked.y));
                                        editor.handleManager.getInterfacePinHandle(p).reqMove(clicked.x, clicked.y);
-                               } catch (NumberFormatException e)
+                               }
+                               catch (NumberFormatException e)
                                {
                                        editor.dialogManager.openWarningDialog("Failed to create Pin!", "Bit width must be a number!");
                                }
+                               catch (IllegalArgumentException e)
+                               {
+                                       editor.dialogManager.openWarningDialog("Failed to create Pin!", "Usage must be one of INPUT, OUTPUT, TRISTATE!");
+                               }
                        }
                }
        }