From e2b3ed1b0e97feaffa6579068c19ca073b7916cb Mon Sep 17 00:00:00 2001 From: bancika Date: Sun, 6 Feb 2011 16:01:57 +0000 Subject: [PATCH] configurable render quality --- .../DIYLC/config.xml | 14 ++- .../DIYLC/library/main.jar | Bin 91953 -> 91941 bytes .../src/org/diylc/common/IPlugInPort.java | 11 +- .../DIYLC/src/org/diylc/core/IView.java | 2 + .../DIYLC/src/org/diylc/core/Theme.java | 114 ++++++++++++++++++ .../org/diylc/presenter/DrawingManager.java | 38 ++++-- .../src/org/diylc/presenter/Presenter.java | 5 + .../src/org/diylc/swing/ActionFactory.java | 36 ++++++ .../src/org/diylc/swing/gui/MainFrame.java | 7 +- .../swing/plugins/canvas/CanvasPanel.java | 53 ++++---- .../swing/plugins/config/ConfigPlugin.java | 43 +++++++ .../plugins/layers/LayersMenuPlugin.java | 3 +- .../DIYLC/update.xml | 4 + 13 files changed, 291 insertions(+), 39 deletions(-) create mode 100644 diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/core/Theme.java create mode 100644 diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/swing/plugins/config/ConfigPlugin.java diff --git a/ diy-layout-creator --username bancika@gmail.com/DIYLC/config.xml b/ diy-layout-creator --username bancika@gmail.com/DIYLC/config.xml index e2f1eb8c..b87aedc2 100644 --- a/ diy-layout-creator --username bancika@gmail.com/DIYLC/config.xml +++ b/ diy-layout-creator --username bancika@gmail.com/DIYLC/config.xml @@ -1,14 +1,22 @@ - lastPath - C:\Documents and Settings\Branislav Stojkovic\Desktop\oldFiles + metric + false zoom 1.0 - metric + lastPath + C:\Documents and Settings\Branislav Stojkovic\Desktop\oldFiles + + + antiAliasing + false + + + hiQualityRender false diff --git a/ diy-layout-creator --username bancika@gmail.com/DIYLC/library/main.jar b/ diy-layout-creator --username bancika@gmail.com/DIYLC/library/main.jar index 854cbae64969225361a60764018e4b9935f83aa2..dafb05bb7edbf53ef7d953606cc6f8778757a355 100644 GIT binary patch delta 1836 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 ZqI{<;Y&2l%AS;Hy4$KYIV)j^5{{mwos$l>C 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 42034f0c..67dda404 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 @@ -11,6 +11,7 @@ import java.util.Set; import org.diylc.core.IDIYComponent; import org.diylc.core.Project; +import org.diylc.swing.plugins.edit.ComponentTransferable; import com.diyfever.gui.simplemq.IMessageListener; import com.diyfever.gui.simplemq.MessageDispatcher; @@ -29,8 +30,9 @@ import com.diyfever.gui.update.VersionNumber; * @see EventType */ public interface IPlugInPort { - - public static final String CHECK_BOX_MENU_ITEM = "org.diylc.checkBoxMenuItem"; + + public static final String ANTI_ALIASING_KEY = "antiAliasing"; + public static final String HI_QUALITY_RENDER_KEY = "hiQualityRender"; /** * Returns size of the canvas that takes project dimensions into account as @@ -328,4 +330,9 @@ public interface IPlugInPort { * Brings each of the selected components one step to front. */ void bringSelectionToFront(); + + /** + * Causes the display to refresh. + */ + void refresh(); } diff --git a/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/core/IView.java b/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/core/IView.java index 0dad7831..14fa7e8a 100644 --- a/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/core/IView.java +++ b/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/core/IView.java @@ -21,6 +21,8 @@ public interface IView { public static final int NO_OPTION = 1; public static final int CANCEL_OPTION = 2; public static final int OK_OPTION = 0; + + public static final String CHECK_BOX_MENU_ITEM = "org.diylc.checkBoxMenuItem"; void showMessage(String message, String title, int messageType); diff --git a/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/core/Theme.java b/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/core/Theme.java new file mode 100644 index 00000000..f3f50443 --- /dev/null +++ b/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/core/Theme.java @@ -0,0 +1,114 @@ +package org.diylc.core; + +import java.awt.Color; +import java.io.Serializable; + +public class Theme implements Serializable { + + private static final long serialVersionUID = 1L; + + private String name; + private Color bgColor; + private Color gridColor; + private Color componentBodyColor; + private Color componentBorderColor; + private Color componentLabelColor; + + public Theme(String name, Color bgColor, Color gridColor, Color componentBodyColor, + Color componentBorderColor, Color componentLabelColor) { + super(); + this.name = name; + this.bgColor = bgColor; + this.gridColor = gridColor; + this.componentBodyColor = componentBodyColor; + this.componentBorderColor = componentBorderColor; + this.componentLabelColor = componentLabelColor; + } + + public String getName() { + return name; + } + + public Color getBgColor() { + return bgColor; + } + + public Color getGridColor() { + return gridColor; + } + + public Color getComponentBodyColor() { + return componentBodyColor; + } + + public Color getComponentBorderColor() { + return componentBorderColor; + } + + public Color getComponentLabelColor() { + return componentLabelColor; + } + + @Override + public int hashCode() { + final int prime = 31; + int result = 1; + result = prime * result + ((bgColor == null) ? 0 : bgColor.hashCode()); + result = prime * result + + ((componentBodyColor == null) ? 0 : componentBodyColor.hashCode()); + result = prime * result + + ((componentBorderColor == null) ? 0 : componentBorderColor.hashCode()); + result = prime * result + + ((componentLabelColor == null) ? 0 : componentLabelColor.hashCode()); + result = prime * result + ((gridColor == null) ? 0 : gridColor.hashCode()); + result = prime * result + ((name == null) ? 0 : name.hashCode()); + return result; + } + + @Override + public boolean equals(Object obj) { + if (this == obj) + return true; + if (obj == null) + return false; + if (getClass() != obj.getClass()) + return false; + Theme other = (Theme) obj; + if (bgColor == null) { + if (other.bgColor != null) + return false; + } else if (!bgColor.equals(other.bgColor)) + return false; + if (componentBodyColor == null) { + if (other.componentBodyColor != null) + return false; + } else if (!componentBodyColor.equals(other.componentBodyColor)) + return false; + if (componentBorderColor == null) { + if (other.componentBorderColor != null) + return false; + } else if (!componentBorderColor.equals(other.componentBorderColor)) + return false; + if (componentLabelColor == null) { + if (other.componentLabelColor != null) + return false; + } else if (!componentLabelColor.equals(other.componentLabelColor)) + return false; + if (gridColor == null) { + if (other.gridColor != null) + return false; + } else if (!gridColor.equals(other.gridColor)) + return false; + if (name == null) { + if (other.name != null) + return false; + } else if (!name.equals(other.name)) + return false; + return true; + } + + @Override + public String toString() { + return name; + } +} diff --git a/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/presenter/DrawingManager.java b/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/presenter/DrawingManager.java index 79bbc40f..14702067 100644 --- a/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/presenter/DrawingManager.java +++ b/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/presenter/DrawingManager.java @@ -21,6 +21,7 @@ import org.diylc.common.DrawOption; import org.diylc.common.EventType; import org.diylc.common.GridType; import org.diylc.common.IComponentFiler; +import org.diylc.common.IPlugInPort; import org.diylc.common.ObjectCache; import org.diylc.core.ComponentState; import org.diylc.core.IDIYComponent; @@ -101,19 +102,38 @@ public class DrawingManager { } G2DWrapper g2dWrapper = new G2DWrapper(g2d); - if (drawOptions.contains(DrawOption.ANTIALIASING) - && ConfigurationManager.getInstance().readBoolean(ANTIALIASING_KEY, true)) { + if (drawOptions.contains(DrawOption.ANTIALIASING)) { g2d .setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); + } else { + g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, + RenderingHints.VALUE_ANTIALIAS_OFF); + } + if (ConfigurationManager.getInstance() + .readBoolean(IPlugInPort.HI_QUALITY_RENDER_KEY, false)) { + g2d.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING, + RenderingHints.VALUE_TEXT_ANTIALIAS_ON); + g2d.setRenderingHint(RenderingHints.KEY_ALPHA_INTERPOLATION, + RenderingHints.VALUE_ALPHA_INTERPOLATION_QUALITY); + g2d.setRenderingHint(RenderingHints.KEY_COLOR_RENDERING, + RenderingHints.VALUE_COLOR_RENDER_QUALITY); + g2d.setRenderingHint(RenderingHints.KEY_RENDERING, RenderingHints.VALUE_RENDER_QUALITY); + g2d.setRenderingHint(RenderingHints.KEY_DITHERING, RenderingHints.VALUE_DITHER_ENABLE); + g2d.setRenderingHint(RenderingHints.KEY_INTERPOLATION, + RenderingHints.VALUE_INTERPOLATION_BILINEAR); + } else { + g2d.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING, + RenderingHints.VALUE_TEXT_ANTIALIAS_OFF); + g2d.setRenderingHint(RenderingHints.KEY_ALPHA_INTERPOLATION, + RenderingHints.VALUE_ALPHA_INTERPOLATION_SPEED); + g2d.setRenderingHint(RenderingHints.KEY_COLOR_RENDERING, + RenderingHints.VALUE_COLOR_RENDER_SPEED); + g2d.setRenderingHint(RenderingHints.KEY_RENDERING, RenderingHints.VALUE_RENDER_SPEED); + g2d.setRenderingHint(RenderingHints.KEY_DITHERING, RenderingHints.VALUE_DITHER_DISABLE); + g2d.setRenderingHint(RenderingHints.KEY_INTERPOLATION, + RenderingHints.VALUE_INTERPOLATION_NEAREST_NEIGHBOR); } - g2d.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING, - RenderingHints.VALUE_TEXT_ANTIALIAS_OFF); - g2d.setRenderingHint(RenderingHints.KEY_ALPHA_INTERPOLATION, - RenderingHints.VALUE_ALPHA_INTERPOLATION_SPEED); - g2d.setRenderingHint(RenderingHints.KEY_COLOR_RENDERING, - RenderingHints.VALUE_COLOR_RENDER_SPEED); - g2d.setRenderingHint(RenderingHints.KEY_RENDERING, RenderingHints.VALUE_RENDER_SPEED); double zoom = 1d; if (drawOptions.contains(DrawOption.ZOOM)) { 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 9019f16a..be919968 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 @@ -977,6 +977,11 @@ public class Presenter implements IPlugInPort { messageDispatcher.dispatchMessage(EventType.REPAINT); } } + + @Override + public void refresh() { + messageDispatcher.dispatchMessage(EventType.REPAINT); + } /** * Updates the selection with the specified {@link ComponentTransferable}. diff --git a/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/swing/ActionFactory.java b/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/swing/ActionFactory.java index d72326d5..3d9c2998 100644 --- a/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/swing/ActionFactory.java +++ b/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/swing/ActionFactory.java @@ -16,6 +16,7 @@ import org.diylc.common.IPlugInPort; import org.diylc.common.ITask; import org.diylc.common.PropertyWrapper; import org.diylc.core.IDIYComponent; +import org.diylc.core.IView; import org.diylc.images.IconLoader; import org.diylc.swing.gui.DialogFactory; import org.diylc.swing.gui.editor.PropertyEditorDialog; @@ -28,6 +29,7 @@ import org.diylc.swing.plugins.file.FileFilterEnum; import com.diyfever.gui.ButtonDialog; import com.diyfever.gui.IDrawingProvider; import com.diyfever.gui.export.DrawingExporter; +import com.diyfever.gui.miscutils.ConfigurationManager; import com.rits.cloning.Cloner; public class ActionFactory { @@ -133,6 +135,13 @@ public class ActionFactory { return new BringToFrontAction(plugInPort); } + // Config actions. + + public ConfigAction createConfigAction(IPlugInPort plugInPort, String title, String configKey, + boolean defaultValue) { + return new ConfigAction(plugInPort, title, configKey, defaultValue); + } + // File menu actions. public static class NewAction extends AbstractAction { @@ -789,4 +798,31 @@ public class ActionFactory { plugInPort.bringSelectionToFront(); } } + + public static class ConfigAction extends AbstractAction { + + private static final long serialVersionUID = 1L; + + private IPlugInPort plugInPort; + private String configKey; + + public ConfigAction(IPlugInPort plugInPort, String title, String configKey, + boolean defaultValue) { + super(); + this.plugInPort = plugInPort; + this.configKey = configKey; + putValue(AbstractAction.NAME, title); + putValue(IView.CHECK_BOX_MENU_ITEM, true); + putValue(AbstractAction.SELECTED_KEY, ConfigurationManager.getInstance().readBoolean( + configKey, defaultValue)); + } + + @Override + public void actionPerformed(ActionEvent e) { + LOG.info(getValue(AbstractAction.NAME) + " triggered"); + ConfigurationManager.getInstance().writeValue(configKey, + getValue(AbstractAction.SELECTED_KEY)); + plugInPort.refresh(); + } + } } diff --git a/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/swing/gui/MainFrame.java b/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/swing/gui/MainFrame.java index 7905cd5e..273c4152 100644 --- a/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/swing/gui/MainFrame.java +++ b/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/swing/gui/MainFrame.java @@ -33,10 +33,12 @@ import org.diylc.common.EventType; import org.diylc.common.IPlugIn; import org.diylc.common.IPlugInPort; import org.diylc.common.ITask; +import org.diylc.core.IView; import org.diylc.images.IconLoader; import org.diylc.presenter.Presenter; import org.diylc.swing.ISwingUI; import org.diylc.swing.plugins.canvas.CanvasPlugin; +import org.diylc.swing.plugins.config.ConfigPlugin; import org.diylc.swing.plugins.edit.EditMenuPlugin; import org.diylc.swing.plugins.file.FileMenuPlugin; import org.diylc.swing.plugins.help.HelpMenuPlugin; @@ -78,6 +80,7 @@ public class MainFrame extends JFrame implements ISwingUI { presenter.installPlugin(new ToolBox(this)); presenter.installPlugin(new FileMenuPlugin(this)); presenter.installPlugin(new EditMenuPlugin(this)); + presenter.installPlugin(new ConfigPlugin(this)); presenter.installPlugin(new LayersMenuPlugin(this)); // presenter.installPlugin(new OnlineManager()); presenter.installPlugin(new HelpMenuPlugin(this)); @@ -113,7 +116,7 @@ public class MainFrame extends JFrame implements ISwingUI { // setGlassPane(new CustomGlassPane()); // getGlassPane().setVisible(true); } - + public Presenter getPresenter() { return presenter; } @@ -235,7 +238,7 @@ public class MainFrame extends JFrame implements ISwingUI { if (action == null) { menu.addSeparator(); } else { - Boolean isCheckBox = (Boolean) action.getValue(IPlugInPort.CHECK_BOX_MENU_ITEM); + Boolean isCheckBox = (Boolean) action.getValue(IView.CHECK_BOX_MENU_ITEM); if (isCheckBox != null && isCheckBox) { menu.add(new JCheckBoxMenuItem(action)); } else { diff --git a/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/swing/plugins/canvas/CanvasPanel.java b/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/swing/plugins/canvas/CanvasPanel.java index 587ca6a9..cee29526 100644 --- a/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/swing/plugins/canvas/CanvasPanel.java +++ b/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/swing/plugins/canvas/CanvasPanel.java @@ -34,6 +34,7 @@ import org.diylc.swing.gui.DialogFactory; import org.diylc.swing.gui.editor.PropertyEditorDialog; import com.diyfever.gui.ButtonDialog; +import com.diyfever.gui.miscutils.ConfigurationManager; /** * GUI class used to draw onto. @@ -52,6 +53,8 @@ class CanvasPanel extends JComponent implements Autoscroll { private static boolean USE_HARDWARE_ACCELLERATION = false; static final EnumSet DRAW_OPTIONS = EnumSet.of(DrawOption.GRID, + DrawOption.SELECTION, DrawOption.ZOOM, DrawOption.CONTROL_POINTS); + static final EnumSet DRAW_OPTIONS_ANTI_ALIASING = EnumSet.of(DrawOption.GRID, DrawOption.SELECTION, DrawOption.ZOOM, DrawOption.ANTIALIASING, DrawOption.CONTROL_POINTS); @@ -75,7 +78,8 @@ class CanvasPanel extends JComponent implements Autoscroll { private void initializeDnD() { // Initialize drag source recognizer. DragSource.getDefaultDragSource().createDefaultDragGestureRecognizer(this, - DnDConstants.ACTION_COPY_OR_MOVE | DnDConstants.ACTION_LINK, new CanvasGestureListener(plugInPort)); + DnDConstants.ACTION_COPY_OR_MOVE | DnDConstants.ACTION_LINK, + new CanvasGestureListener(plugInPort)); // Initialize drop target. new DropTarget(this, DnDConstants.ACTION_COPY_OR_MOVE, new CanvasTargetListener(plugInPort), true); @@ -104,7 +108,9 @@ class CanvasPanel extends JComponent implements Autoscroll { bufferImage = createImage(getWidth(), getHeight()); } Graphics2D g2d = (Graphics2D) bufferImage.getGraphics(); - plugInPort.draw(g2d, DRAW_OPTIONS, null); + plugInPort.draw(g2d, ConfigurationManager.getInstance().readBoolean( + IPlugInPort.ANTI_ALIASING_KEY, true) ? DRAW_OPTIONS_ANTI_ALIASING : DRAW_OPTIONS, + null); } @Override @@ -116,7 +122,9 @@ class CanvasPanel extends JComponent implements Autoscroll { createBufferImage(); } else { Graphics2D g2d = (Graphics2D) bufferImage.getGraphics(); - plugInPort.draw(g2d, DRAW_OPTIONS, null); + plugInPort.draw(g2d, ConfigurationManager.getInstance().readBoolean( + IPlugInPort.ANTI_ALIASING_KEY, true) ? DRAW_OPTIONS_ANTI_ALIASING + : DRAW_OPTIONS, null); } if (USE_HARDWARE_ACCELLERATION) { VolatileImage volatileImage = (VolatileImage) bufferImage; @@ -125,10 +133,11 @@ class CanvasPanel extends JComponent implements Autoscroll { if (volatileImage.contentsLost()) { createBufferImage(); } -// int validation = volatileImage.validate(screenGraphicsConfiguration); -// if (validation == VolatileImage.IMAGE_INCOMPATIBLE) { -// createBufferImage(); -// } + // int validation = + // volatileImage.validate(screenGraphicsConfiguration); + // if (validation == VolatileImage.IMAGE_INCOMPATIBLE) { + // createBufferImage(); + // } g.drawImage(bufferImage, 0, 0, this); } catch (NullPointerException e) { createBufferImage(); @@ -136,7 +145,7 @@ class CanvasPanel extends JComponent implements Autoscroll { } while (volatileImage == null || volatileImage.contentsLost()); } else { g.drawImage(bufferImage, 0, 0, this); -// bufferImage.flush(); + // bufferImage.flush(); } } @@ -154,18 +163,18 @@ class CanvasPanel extends JComponent implements Autoscroll { invalidate(); } }); -// addKeyListener(new KeyAdapter() { -// -// @Override -// public void keyPressed(KeyEvent e) { -// if (e.getKeyCode() == KeyEvent.VK_DELETE) { -// plugInPort.deleteSelectedComponents(); -// } -// // plugInPort.mouseMoved(getMousePosition(), e.isControlDown(), -// // e.isShiftDown(), e -// // .isAltDown()); -// } -// }); + // addKeyListener(new KeyAdapter() { + // + // @Override + // public void keyPressed(KeyEvent e) { + // if (e.getKeyCode() == KeyEvent.VK_DELETE) { + // plugInPort.deleteSelectedComponents(); + // } + // // plugInPort.mouseMoved(getMousePosition(), e.isControlDown(), + // // e.isShiftDown(), e + // // .isAltDown()); + // } + // }); addMouseMotionListener(new MouseAdapter() { @Override @@ -217,8 +226,8 @@ class CanvasPanel extends JComponent implements Autoscroll { // Save default values. for (PropertyWrapper property : editor.getDefaultedProperties()) { if (property.getValue() != null) { - plugInPort.setSelectionDefaultPropertyValue(property.getName(), - property.getValue()); + plugInPort.setSelectionDefaultPropertyValue(property + .getName(), property.getValue()); } } } diff --git a/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/swing/plugins/config/ConfigPlugin.java b/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/swing/plugins/config/ConfigPlugin.java new file mode 100644 index 00000000..80456b97 --- /dev/null +++ b/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/swing/plugins/config/ConfigPlugin.java @@ -0,0 +1,43 @@ +package org.diylc.swing.plugins.config; + +import java.util.EnumSet; + +import org.diylc.common.EventType; +import org.diylc.common.IPlugIn; +import org.diylc.common.IPlugInPort; +import org.diylc.swing.ActionFactory; +import org.diylc.swing.ISwingUI; + +/** + * Controls configuration menu. + * + * @author Branislav Stojkovic + */ +public class ConfigPlugin implements IPlugIn { + + private static final String CONFIG_MENU = "Config"; + + private ISwingUI swingUI; + + public ConfigPlugin(ISwingUI swingUI) { + super(); + this.swingUI = swingUI; + } + + @Override + public void connect(IPlugInPort plugInPort) { + swingUI.injectMenuAction(ActionFactory.getInstance().createConfigAction(plugInPort, + "Anti-Aliasing", IPlugInPort.ANTI_ALIASING_KEY, true), CONFIG_MENU); + swingUI.injectMenuAction(ActionFactory.getInstance().createConfigAction(plugInPort, + "Hi-Quality Rendering", IPlugInPort.HI_QUALITY_RENDER_KEY, false), CONFIG_MENU); + } + + @Override + public EnumSet getSubscribedEventTypes() { + return EnumSet.noneOf(EventType.class); + } + + @Override + public void processMessage(EventType eventType, Object... params) { + } +} diff --git a/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/swing/plugins/layers/LayersMenuPlugin.java b/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/swing/plugins/layers/LayersMenuPlugin.java index 1046f1c5..bf9b314a 100644 --- a/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/swing/plugins/layers/LayersMenuPlugin.java +++ b/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/swing/plugins/layers/LayersMenuPlugin.java @@ -13,6 +13,7 @@ import org.diylc.common.EventType; import org.diylc.common.IPlugIn; import org.diylc.common.IPlugInPort; import org.diylc.core.IDIYComponent; +import org.diylc.core.IView; import org.diylc.swing.ISwingUI; public class LayersMenuPlugin implements IPlugIn { @@ -36,7 +37,7 @@ public class LayersMenuPlugin implements IPlugIn { (Boolean) getValue(Action.SELECTED_KEY)); } }; - action.putValue(IPlugInPort.CHECK_BOX_MENU_ITEM, true); + action.putValue(IView.CHECK_BOX_MENU_ITEM, true); lockActionMap.put(layer, action); swingUI.injectMenuAction(action, LOCK_LAYERS_TITLE); } diff --git a/ diy-layout-creator --username bancika@gmail.com/DIYLC/update.xml b/ diy-layout-creator --username bancika@gmail.com/DIYLC/update.xml index 40c0e476..1f802390 100644 --- a/ diy-layout-creator --username bancika@gmail.com/DIYLC/update.xml +++ b/ diy-layout-creator --username bancika@gmail.com/DIYLC/update.xml @@ -195,6 +195,10 @@ NEW_FEATURE Added few types of trimmers + + NEW_FEATURE + Configurable rendering quality to improve speed + http://code.google.com/p/diy-layout-creator/downloads/list