package com.baselet.diagram; import java.util.ArrayList; import java.util.Collections; import java.util.List; import java.util.Vector; import com.baselet.control.Main; import com.baselet.control.basics.geom.Rectangle; import com.baselet.element.Selector; import com.baselet.element.interfaces.GridElement; import com.baselet.element.old.custom.CustomElement; import com.baselet.gui.CurrentGui; public class SelectorOld extends Selector { private GridElement dominantEntity; private final Vector<GridElement> selectedElements = new Vector<GridElement>(); private final DrawPanel panel; private boolean _selectorframeactive; private final SelectorFrame _selectorframe; public SelectorOld(DrawPanel panel) { this.panel = panel; _selectorframeactive = false; _selectorframe = new SelectorFrame(); } public GridElement getDominantEntity() { if (dominantEntity == null && !selectedElements.isEmpty()) { return selectedElements.firstElement(); } return dominantEntity; } public void setDominantEntity(GridElement dominantEntity) { this.dominantEntity = dominantEntity; } public SelectorFrame getSelectorFrame() { return _selectorframe; } public void setSelectorFrameActive(boolean active) { _selectorframeactive = active; if (!active) { _selectorframe.reset(); } } public boolean isSelectorFrameActive() { return _selectorframeactive; } public void deselectAllWithoutUpdatePropertyPanel() { // copy selected entities, clear list (to let GridElement.isSelected() calls return the correct result) and iterate over list and update selection status of GridElements List<GridElement> listCopy = new ArrayList<GridElement>(selectedElements); selectedElements.clear(); for (GridElement e : listCopy) { e.repaint(); // repaint to make sure now unselected entities are not drawn as selected anymore } dominantEntity = null; } public void selectAll() { select(panel.getGridElements()); } @Override public void doAfterSelectionChanged() { updateSelectorInformation(); } private void updateGUIInformation() { CurrentGui.getInstance().getGui().elementsSelected(selectedElements); boolean customElementSelected = selectedElements.size() == 1 && selectedElements.get(0) instanceof CustomElement; CurrentGui.getInstance().getGui().setCustomElementSelected(customElementSelected); } public void updateSelectorInformation() { GridElement elementForPropPanel = null; if (!selectedElements.isEmpty()) { elementForPropPanel = selectedElements.elementAt(selectedElements.size() - 1); } updateSelectorInformation(elementForPropPanel); } // updates the GUI with the current selector information (that includes the propertypanel) public void updateSelectorInformation(GridElement elementForPropPanel) { // every time something is selected - update the current diagram to this element CurrentDiagram.getInstance().setCurrentDiagramHandler(panel.getHandler()); if (CurrentGui.getInstance().getGui() != null) { updateGUIInformation(); Main.getInstance().setPropertyPanelToGridElement(elementForPropPanel); } } public void multiSelect(Rectangle rect) { for (GridElement e : panel.getGridElements()) { if (e.isInRange(rect)) { select(e); } } } @Override public boolean isSelected(GridElement ge) { boolean isSelected = super.isSelected(ge); return isSelected; } @Override public List<GridElement> getSelectedElements() { return selectedElements; } @Override public List<GridElement> getAllElements() { if (CurrentDiagram.getInstance().getDiagramHandler() == null) { return Collections.<GridElement> emptyList(); } return CurrentDiagram.getInstance().getDiagramHandler().getDrawPanel().getGridElements(); } @Override public void doAfterSelect(GridElement e) { super.doAfterSelect(e); e.repaint(); // element must be repainted if selection state has changed (for selectioncolor) } @Override public void doAfterDeselect(GridElement e) { super.doAfterDeselect(e); e.repaint(); // element must be repainted if selection state has changed (for selectioncolor) } }