diff --git a/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/common/IPlugInPort.java b/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/common/IPlugInPort.java index 0e524942..061d0e55 100644 --- a/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/common/IPlugInPort.java +++ b/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/common/IPlugInPort.java @@ -301,9 +301,8 @@ public interface IPlugInPort { * exception will be thrown. * * @param properties - * @throws Exception */ - void applyPropertiesToSelection(List properties) throws Exception; + void applyPropertiesToSelection(List properties); /** * @return a list of editable properties of the current project. diff --git a/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/images/IconLoader.java b/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/images/IconLoader.java index ad5ae22f..4df65037 100644 --- a/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/images/IconLoader.java +++ b/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/images/IconLoader.java @@ -24,7 +24,7 @@ public enum IconLoader { "wrench.png"), Group("group.png"), Ungroup("ungroup.png"), TraceMask("trace_mask.png"), Faq( "faq.png"), Component("component.png"), Plugin("plugin.png"), Manual("manual.png"), Donate( "donate.png"), Bug("bug.png"), AboutDialog("about_dialog.png"), DocumentEdit( - "document_edit.png"); + "document_edit.png"), EditComponent("edit_component.png"); protected String name; diff --git a/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/images/edit_component.png b/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/images/edit_component.png new file mode 100644 index 00000000..9f438c3e Binary files /dev/null and b/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/images/edit_component.png differ diff --git a/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/plugins/clipboard/ClipboardManager.java b/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/plugins/clipboard/ClipboardManager.java index a89e6e6c..1785b655 100644 --- a/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/plugins/clipboard/ClipboardManager.java +++ b/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/plugins/clipboard/ClipboardManager.java @@ -80,6 +80,8 @@ public class ClipboardManager implements IPlugIn, ClipboardOwner { plugInPort.injectMenuAction(pasteAction, EDIT_TITLE); plugInPort.injectMenuAction(null, EDIT_TITLE); plugInPort.injectMenuAction(new SelectAllAction(), EDIT_TITLE); + plugInPort.injectMenuAction(null, EDIT_TITLE); + plugInPort.injectMenuAction(new EditSelectionAction(), EDIT_TITLE); plugInPort.injectMenuAction(new EditProjectAction(), EDIT_TITLE); plugInPort.injectMenuAction(null, EDIT_TITLE); plugInPort.injectMenuAction(new GroupAction(), EDIT_TITLE); @@ -268,6 +270,41 @@ public class ClipboardManager implements IPlugIn, ClipboardOwner { } } + class EditSelectionAction extends AbstractAction { + + private static final long serialVersionUID = 1L; + + public EditSelectionAction() { + super(); + putValue(AbstractAction.NAME, "Edit Selection"); + putValue(AbstractAction.ACCELERATOR_KEY, KeyStroke.getKeyStroke(KeyEvent.VK_E, + ActionEvent.CTRL_MASK)); + putValue(AbstractAction.SMALL_ICON, IconLoader.EditComponent.getIcon()); + } + + @Override + public void actionPerformed(ActionEvent e) { + LOG.info("Edit Selection triggered"); + List properties = plugInPort.getMutualSelectionProperties(); + if (properties == null || properties.isEmpty()) { + LOG.info("Nothing to edit"); + return; + } + PropertyEditorDialog editor = DialogFactory.getInstance().createPropertyEditorDialog( + properties, "Edit Selection"); + editor.setVisible(true); + if (ButtonDialog.OK.equals(editor.getSelectedButtonCaption())) { + plugInPort.applyPropertiesToSelection(properties); + } + // Save default values. + for (PropertyWrapper property : editor.getDefaultedProperties()) { + if (property.getValue() != null) { + plugInPort.setDefaultPropertyValue(property.getName(), property.getValue()); + } + } + } + } + // ClipboardOwner @Override diff --git a/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/presenter/Presenter.java b/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/presenter/Presenter.java index da77a3a2..5fad48c7 100644 --- a/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/presenter/Presenter.java +++ b/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/presenter/Presenter.java @@ -996,7 +996,7 @@ public class Presenter implements IPlugInPort { } @Override - public void applyPropertiesToSelection(List properties) throws Exception { + public void applyPropertiesToSelection(List properties) { LOG.debug(String.format("applyPropertiesToSelection(%s)", properties)); Project oldProject = cloner.deepClone(currentProject); try { @@ -1005,11 +1005,13 @@ public class Presenter implements IPlugInPort { property.writeTo(component); } } + } catch (Exception e) { + LOG.error("Could not apply selection properties", e); } finally { // Notify the listeners. if (!oldProject.equals(currentProject)) { messageDispatcher.dispatchMessage(EventType.PROJECT_MODIFIED, oldProject, cloner - .deepClone(currentProject), "Edit"); + .deepClone(currentProject), "Edit Selection"); } messageDispatcher.dispatchMessage(EventType.REPAINT); messageDispatcher.dispatchMessage(EventType.SELECTION_SIZE_CHANGED, @@ -1049,8 +1051,7 @@ public class Presenter implements IPlugInPort { .deepClone(currentProject), "Edit Project"); } messageDispatcher.dispatchMessage(EventType.REPAINT); - messageDispatcher.dispatchMessage(EventType.SELECTION_SIZE_CHANGED, - calculateSelectionDimension()); + messageDispatcher.dispatchMessage(EventType.ZOOM_CHANGED, zoomLevel); } }