X-Git-Url: https://mograsim.net/gitweb/?a=blobdiff_plain;f=net.mograsim.logic.model.editor%2Fsrc%2Fnet%2Fmograsim%2Flogic%2Fmodel%2Feditor%2Fui%2FEditorGUI.java;fp=net.mograsim.logic.model.editor%2Fsrc%2Fnet%2Fmograsim%2Flogic%2Fmodel%2Feditor%2Fui%2FEditorGUI.java;h=0000000000000000000000000000000000000000;hb=7d05144c25daa53e60fc9ed9fd503546a86567f8;hp=17e12ebb07ae4179ea79115a87da305c7bfa337c;hpb=8bed58cd47f4e53a0a83e066d38864aa6875502f;p=Mograsim.git diff --git a/net.mograsim.logic.model.editor/src/net/mograsim/logic/model/editor/ui/EditorGUI.java b/net.mograsim.logic.model.editor/src/net/mograsim/logic/model/editor/ui/EditorGUI.java deleted file mode 100644 index 17e12ebb..00000000 --- a/net.mograsim.logic.model.editor/src/net/mograsim/logic/model/editor/ui/EditorGUI.java +++ /dev/null @@ -1,232 +0,0 @@ -package net.mograsim.logic.model.editor.ui; - -import java.io.IOException; - -import org.eclipse.swt.SWT; -import org.eclipse.swt.events.SelectionEvent; -import org.eclipse.swt.events.SelectionListener; -import org.eclipse.swt.graphics.Point; -import org.eclipse.swt.graphics.Rectangle; -import org.eclipse.swt.layout.GridData; -import org.eclipse.swt.layout.GridLayout; -import org.eclipse.swt.widgets.Composite; -import org.eclipse.swt.widgets.Display; -import org.eclipse.swt.widgets.Event; -import org.eclipse.swt.widgets.List; -import org.eclipse.swt.widgets.Listener; -import org.eclipse.swt.widgets.Menu; -import org.eclipse.swt.widgets.MenuItem; -import org.eclipse.swt.widgets.Shell; -import org.eclipse.swt.widgets.ToolBar; -import org.eclipse.swt.widgets.ToolItem; - -import net.haspamelodica.swt.helper.zoomablecanvas.helper.ZoomableCanvasOverlay; -import net.haspamelodica.swt.helper.zoomablecanvas.helper.ZoomableCanvasUserInput; -import net.mograsim.logic.model.editor.Editor; -import net.mograsim.logic.model.editor.SaveLoadManager; -import net.mograsim.logic.model.serializing.IndirectModelComponentCreator; - -public class EditorGUI -{ - public final Display display; - public final Shell shell; - public final EditorCanvas logicCanvas; - private final List addList; - private final Editor editor; - - public EditorGUI(Editor editor) - { - this.editor = editor; - display = Display.getDefault(); - shell = new Shell(display); - - GridLayout layout = new GridLayout(); - layout.numColumns = 1; - shell.setLayout(layout); - - setupTopToolBar(shell); - Composite innerComp = new Composite(shell, SWT.NONE); - GridData innerCompData = new GridData(); - innerCompData.grabExcessHorizontalSpace = true; - innerCompData.grabExcessVerticalSpace = true; - innerCompData.horizontalAlignment = SWT.FILL; - innerCompData.verticalAlignment = SWT.FILL; - innerComp.setLayoutData(innerCompData); - - GridLayout innerLayout = new GridLayout(); - innerComp.setLayout(innerLayout); - innerLayout.numColumns = 2; - - GridData d = new GridData(); - d.grabExcessHorizontalSpace = true; - d.horizontalAlignment = SWT.FILL; - d.grabExcessVerticalSpace = true; - d.verticalAlignment = SWT.FILL; - - logicCanvas = new EditorCanvas(innerComp, SWT.TRAIL, editor); - logicCanvas.setLayoutData(d); - - d = new GridData(); - d.grabExcessVerticalSpace = true; - d.verticalAlignment = SWT.FILL; - d.verticalSpan = 2; - addList = new List(innerComp, SWT.V_SCROLL); - addList.setLayoutData(d); - refreshAddList(); - - setupBottomToolBar(innerComp); - - ZoomableCanvasUserInput userInput = new ZoomableCanvasUserInput(logicCanvas); - userInput.buttonDrag = 3; - userInput.buttonZoom = 2; - userInput.enableUserInput(); - new ZoomableCanvasOverlay(logicCanvas, null).enableScale(); - } - - private ToolBar setupTopToolBar(Composite parent) - { - GridData d = new GridData(); - d.grabExcessHorizontalSpace = true; - d.horizontalAlignment = SWT.FILL; - - ToolBar toolBar = new ToolBar(parent, SWT.BORDER); - toolBar.setLayoutData(d); - - ToolItem file = new ToolItem(toolBar, SWT.DROP_DOWN); - - // TODO - DropDownEntry newEntry = new DropDownEntry("New", e -> Editor.openNewEditor()); - DropDownEntry loadEntry = new DropDownEntry("Load", e -> - { - try - { - SaveLoadManager.openLoadDialog(); - } - catch (IOException e1) - { - editor.dialogManager.openWarningDialog("Failed to load Component!", e1.getMessage()); - } - }); - DropDownEntry saveEntry = new DropDownEntry("Save", e -> editor.save()); - DropDownEntry saveAsEntry = new DropDownEntry("Save as...", e -> editor.saveAs()); - - DropDownEntry[] entries = new DropDownEntry[] { newEntry, loadEntry, saveEntry, saveAsEntry }; - - setupDrowpDownMenu(file, entries); - - file.setText("File"); - return toolBar; - } - - private ToolBar setupBottomToolBar(Composite parent) - { - GridData d = new GridData(); - d.grabExcessHorizontalSpace = true; - d.horizontalAlignment = SWT.FILL; - - ToolBar toolBar = new ToolBar(parent, SWT.BORDER); - toolBar.setLayoutData(d); - - ToolItem snappingLabel = new ToolItem(toolBar, SWT.NONE); - snappingLabel.setText("Snapping:"); - - ToolItem snappSelect = new ToolItem(toolBar, SWT.DROP_DOWN); - DropDownEntry[] entries = new DropDownEntry[Editor.Snapping.values().length]; - int index = 0; - for (Editor.Snapping sn : Editor.Snapping.values()) - { - entries[index++] = new DropDownEntry(sn.toString(), e -> - { - editor.setSnapping(sn); - snappSelect.setText(sn.toString()); - }); - } - snappSelect.setText(editor.getSnapping().toString()); - setupDrowpDownMenu(snappSelect, entries); - - new ToolItem(toolBar, SWT.SEPARATOR); - - toolBar.pack(); - - return toolBar; - } - - private void setupDrowpDownMenu(ToolItem parent, DropDownEntry[] entries) - { - Menu menu = new Menu(shell, SWT.POP_UP); - for (DropDownEntry entry : entries) - { - MenuItem item = new MenuItem(menu, SWT.PUSH); - item.addSelectionListener(new SelectionListener() - { - @Override - public void widgetSelected(SelectionEvent e) - { - entry.listener.widgetSelected(e); - } - - @Override - public void widgetDefaultSelected(SelectionEvent e) - { - widgetSelected(e); - } - }); - item.setText(entry.title); - } - - parent.addListener(SWT.Selection, new Listener() - { - public void handleEvent(Event event) - { - if (event.detail == SWT.ARROW) - { - Rectangle rect = parent.getBounds(); - Point pt = new Point(rect.x, rect.y + rect.height); - pt = parent.getParent().toDisplay(pt); - menu.setLocation(pt.x, pt.y); - menu.setVisible(true); - } - } - }); - } - - private static class DropDownEntry - { - public final String title; - public final EntrySelectedListener listener; - - public DropDownEntry(String title, EntrySelectedListener listener) - { - super(); - this.title = title; - this.listener = listener; - } - } - - private static interface EntrySelectedListener - { - public void widgetSelected(SelectionEvent e); - } - - public void refreshAddList() - { - addList.setItems(IndirectModelComponentCreator.getStandardComponentIDs().keySet().stream().sorted().toArray(String[]::new)); - addList.select(0); - } - - public String getAddListSelected() - { - String[] selection = addList.getSelection(); - if (selection.length == 0) - throw new IllegalStateException("Selection in the Add Component List may never be empty!"); - return selection[0]; - } - - public void open() - { - shell.open(); - while (!shell.isDisposed()) - if (!display.readAndDispatch()) - display.sleep(); - } -} \ No newline at end of file