package com.baselet.gui.command; import com.baselet.control.HandlerElementMap; import com.baselet.control.Main; import com.baselet.diagram.CustomPreviewHandler; import com.baselet.diagram.DiagramHandler; import com.baselet.diagram.SelectorOld; import com.baselet.element.interfaces.GridElement; import com.baselet.gui.CurrentGui; import com.baselet.gui.pane.OwnSyntaxPane; public class CustomCodePropertyChanged extends Command { // private GridElement _entity; private String _newState; private String _oldState; private int _oldCaret; private int _newCaret; public String getNewState() { return _newState; } public String getOldState() { return _oldState; } public int getOldCaret() { return _oldCaret; } public int getNewCaret() { return _newCaret; } public CustomCodePropertyChanged(String oldState, String newState, int oldCaret, int newCaret) { _newState = newState; _oldState = oldState; _newCaret = newCaret; _oldCaret = oldCaret; } @Override public void execute(DiagramHandler handler) { super.execute(handler); GridElement gridElement = Main.getInstance().getEditedGridElement(); // select grid element if nothing is selected if (gridElement == null) { SelectorOld selector = CurrentGui.getInstance().getGui().getCurrentCustomHandler().getPreviewHandler().getDrawPanel().getSelector(); selector.selectAll(); if (selector.getSelectedElements().size() >= 1) { gridElement = selector.getSelectedElements().get(0); } } if (gridElement != null && HandlerElementMap.getHandlerForElement(gridElement) instanceof CustomPreviewHandler) { gridElement.setPanelAttributes(_newState); OwnSyntaxPane pane = CurrentGui.getInstance().getGui().getPropertyPane(); pane.switchToElement(gridElement); if (pane.getText().length() >= _newCaret) { pane.getTextComponent().setCaretPosition(_newCaret); } gridElement.repaint(); } } @Override public void undo(DiagramHandler handler) { // AB: Do not call super.undo() which would deselect the entity // super.undo(handler); GridElement gridElement = Main.getInstance().getEditedGridElement(); // select grid element if (gridElement == null) { SelectorOld selector = CurrentGui.getInstance().getGui().getCurrentCustomHandler().getPreviewHandler().getDrawPanel().getSelector(); selector.selectAll(); if (selector.getSelectedElements().size() >= 1) { gridElement = selector.getSelectedElements().get(0); } } if (gridElement != null && HandlerElementMap.getHandlerForElement(gridElement) instanceof CustomPreviewHandler) { gridElement.setPanelAttributes(_oldState); OwnSyntaxPane pane = CurrentGui.getInstance().getGui().getPropertyPane(); pane.switchToElement(gridElement); if (pane.getText().length() >= _oldCaret) { pane.getTextComponent().setCaretPosition(_oldCaret); } gridElement.repaint(); } } @Override public String toString() { return "Changestate from " + getOldState() + " to " + getNewState(); } }