refactored some swing out of the core parts

This commit is contained in:
bancika
2011-01-23 22:57:52 +00:00
parent 726f17aa7f
commit 1de1b9d6ec
59 changed files with 306 additions and 338 deletions
@@ -8,8 +8,8 @@ import javax.swing.UIManager;
import org.apache.log4j.Logger;
import org.apache.log4j.PropertyConfigurator;
import org.diylc.gui.MainFrame;
import org.diylc.presenter.Presenter;
import org.diylc.swing.gui.MainFrame;
import com.diyfever.gui.miscutils.PropertyInjector;
@@ -8,12 +8,6 @@ import java.util.List;
import java.util.Map;
import java.util.Set;
import javax.swing.Action;
import javax.swing.Icon;
import javax.swing.JComponent;
import javax.swing.SwingConstants;
import javax.swing.JPopupMenu.Separator;
import org.diylc.core.IDIYComponent;
import org.diylc.core.Project;
@@ -132,49 +126,6 @@ public interface IPlugInPort {
*/
void draw(Graphics2D g2d, Set<DrawOption> drawOptions, IComponentFiler filter);
/**
* Injects a custom GUI panels provided by the plug-in and desired position
* in the window. Application will layout plug-in panels accordingly. <br>
* Valid positions are:
* <ul>
* <li> {@link SwingConstants#TOP}</li>
* <li> {@link SwingConstants#BOTTOM}</li>
* <li> {@link SwingConstants#LEFT}</li>
* <li> {@link SwingConstants#RIGHT}</li>
* </ul>
*
* Center position is reserved for the main canvas panel and cannot be used.
*
* @param component
* @param position
* @throws BadPositionException
* in case invalid position is specified
*/
void injectGUIComponent(JComponent component, int position) throws BadPositionException;
/**
* Injects a custom menu action into application's main menu. If
* <code>action</code> is set to null {@link Separator} will be added. If
* the specified menu does not exist it will be automatically created.
*
* @param action
* {@link Action} to inser
* @param menuName
* name of the menu to insert into
*/
void injectMenuAction(Action action, String menuName);
/**
* Injects a custom submenu into application's main menu. If
* <code>action</code> is set to null {@link Separator} will be added. If
* the specified menu does not exist it will be automatically created.
*
* @param name
* @param icon
* @param parentMenuName
*/
void injectSubmenu(String name, Icon icon, String parentMenuName);
Double[] getAvailableZoomLevels();
/**
@@ -1,11 +1,5 @@
package org.diylc.core;
import javax.swing.Action;
import javax.swing.Icon;
import javax.swing.JComponent;
import org.diylc.common.BadPositionException;
import org.diylc.common.IPlugInPort;
/**
* Base interface for the main GUI component.
@@ -28,40 +22,6 @@ public interface IView {
public static final int CANCEL_OPTION = 2;
public static final int OK_OPTION = 0;
/**
* Adds a component to the view.
*
* @param component
* component to insert
* @param position
* target position
* @throws BadPositionException
*
* @see IPlugInPort#injectGUIComponent
*/
void addComponent(JComponent component, int position) throws BadPositionException;
/**
* Adds a menu action.
*
* @param action
* action to insert
* @param menuName
* target menu name
*
* @see IPlugInPort#injectMenuAction
*/
void addMenuAction(Action action, String menuName);
/**
* Adds a submenu to an existing menu.
*
* @param name
* @param icon
* @param parentMenuName
*/
void addSubmenu(String name, Icon icon, String parentMenuName);
void showMessage(String message, String title, int messageType);
int showConfirmDialog(String message, String title, int optionType, int messageType);
@@ -19,12 +19,7 @@ import java.util.List;
import java.util.Map;
import java.util.Set;
import javax.swing.Action;
import javax.swing.Icon;
import javax.swing.JComponent;
import org.apache.log4j.Logger;
import org.diylc.common.BadPositionException;
import org.diylc.common.ComponentSelection;
import org.diylc.common.ComponentType;
import org.diylc.common.DrawOption;
@@ -309,26 +304,6 @@ public class Presenter implements IPlugInPort {
.getPotentialControlPoint()), componentSlotToDraw, dragInProgress);
}
@Override
public void injectGUIComponent(JComponent component, int position) throws BadPositionException {
LOG.info(String.format("injectGUIComponent(%s, %s)", component.getClass().getName(),
position));
view.addComponent(component, position);
}
@Override
public void injectMenuAction(Action action, String menuName) {
LOG.info(String.format("injectMenuAction(%s, %s)", action == null ? "Separator" : action
.getValue(Action.NAME), menuName));
view.addMenuAction(action, menuName);
}
@Override
public void injectSubmenu(String name, Icon icon, String parentMenuName) {
LOG.info(String.format("injectSubmenu(%s, icon, %s)", name, parentMenuName));
view.addSubmenu(name, icon, parentMenuName);
}
/**
* Finds all components whose areas include the specified {@link Point}.
* Point is <b>not</b> scaled by the zoom factor. Components that belong to
@@ -604,7 +579,8 @@ public class Presenter implements IPlugInPort {
for (IDIYComponent<?> component : currentProject.getComponents()) {
ComponentType componentType = componentTypeMap.get(component.getClass().getName());
// Do not process a component if it's already in the map and if it's locked.
// Do not process a component if it's already in the map and if it's
// locked.
if (!controlPointMap.containsKey(component) && !isComponentLocked(component)) {
// Check if there's a control point in the current selection
// that matches with one of its control points.
@@ -700,20 +676,24 @@ public class Presenter implements IPlugInPort {
}
// Update all points.
boolean isFirst = true;
for (Map.Entry<IDIYComponent<?>, Set<Integer>> entry : controlPointMap.entrySet()) {
IDIYComponent<?> c = entry.getKey();
// drawingManager.invalidateComponent(c);
for (Integer index : entry.getValue()) {
Point p = new Point(c.getControlPoint(index));
p.translate(dx, dy);
if (snapToGrid) {
CalcUtils.snapPointToGrid(p, currentProject.getGridSpacing());
}
// When the first point is moved, calculate how much it
// actually moved after snapping.
if (actualDx == 0 && actualDy == 0) {
if (isFirst) {
isFirst = false;
p.translate(dx, dy);
if (snapToGrid) {
CalcUtils.snapPointToGrid(p, currentProject.getGridSpacing());
}
actualDx = p.x - c.getControlPoint(index).x;
actualDy = p.y - c.getControlPoint(index).y;
} else {
p.translate(actualDx, actualDy);
}
c.setControlPoint(p, index);
}
@@ -0,0 +1,60 @@
package org.diylc.swing;
import javax.swing.Action;
import javax.swing.Icon;
import javax.swing.JComponent;
import javax.swing.SwingConstants;
import javax.swing.JPopupMenu.Separator;
import org.diylc.common.BadPositionException;
/**
* Interface for plugin access to the swing front end.
*
* @author Branislav Stojkovic
*/
public interface ISwingUI {
/**
* Injects a custom GUI panels provided by the plug-in and desired position
* in the window. Application will layout plug-in panels accordingly. <br>
* Valid positions are:
* <ul>
* <li> {@link SwingConstants#TOP}</li>
* <li> {@link SwingConstants#BOTTOM}</li>
* <li> {@link SwingConstants#LEFT}</li>
* <li> {@link SwingConstants#RIGHT}</li>
* </ul>
*
* Center position is reserved for the main canvas panel and cannot be used.
*
* @param component
* @param position
* @throws BadPositionException
* in case invalid position is specified
*/
void injectGUIComponent(JComponent component, int position) throws BadPositionException;
/**
* Injects a custom menu action into application's main menu. If
* <code>action</code> is set to null {@link Separator} will be added. If
* the specified menu does not exist it will be automatically created.
*
* @param action
* {@link Action} to inser
* @param menuName
* name of the menu to insert into
*/
void injectMenuAction(Action action, String menuName);
/**
* Injects a custom submenu into application's main menu. If
* <code>action</code> is set to null {@link Separator} will be added. If
* the specified menu does not exist it will be automatically created.
*
* @param name
* @param icon
* @param parentMenuName
*/
void injectSubmenu(String name, Icon icon, String parentMenuName);
}
@@ -1,4 +1,4 @@
package org.diylc.gui;
package org.diylc.swing.gui;
import java.awt.Graphics;
import java.awt.Graphics2D;
@@ -1,4 +1,4 @@
package org.diylc.gui;
package org.diylc.swing.gui;
import java.io.File;
import java.util.List;
@@ -9,13 +9,13 @@ import javax.swing.JFrame;
import javax.swing.filechooser.FileFilter;
import org.diylc.common.PropertyWrapper;
import org.diylc.gui.components.OverwritePromptFileChooser;
import org.diylc.gui.editor.PropertyEditorDialog;
import org.diylc.plugins.file.BomDialog;
import org.diylc.plugins.file.BomEntry;
import org.diylc.plugins.online.view.LoginDialog;
import org.diylc.plugins.online.view.NewUserDialog;
import org.diylc.plugins.online.view.UploadDialog;
import org.diylc.swing.gui.components.OverwritePromptFileChooser;
import org.diylc.swing.gui.editor.PropertyEditorDialog;
import org.diylc.swing.plugins.file.BomDialog;
import org.diylc.swing.plugins.file.BomEntry;
import org.diylc.swing.plugins.online.view.LoginDialog;
import org.diylc.swing.plugins.online.view.NewUserDialog;
import org.diylc.swing.plugins.online.view.UploadDialog;
import com.diyfever.gui.AboutDialog;
import com.diyfever.gui.IFileChooserAccessory;
@@ -1,4 +1,4 @@
package org.diylc.gui;
package org.diylc.swing.gui;
import java.awt.BorderLayout;
import java.awt.Container;
@@ -25,22 +25,26 @@ import javax.swing.JPanel;
import javax.swing.SwingConstants;
import javax.swing.Timer;
import org.apache.log4j.Logger;
import org.diylc.common.BadPositionException;
import org.diylc.common.EventType;
import org.diylc.common.IPlugIn;
import org.diylc.common.IPlugInPort;
import org.diylc.core.IView;
import org.diylc.images.IconLoader;
import org.diylc.plugins.canvas.CanvasPlugin;
import org.diylc.plugins.clipboard.EditMenuPlugin;
import org.diylc.plugins.file.FileMenuPlugin;
import org.diylc.plugins.help.HelpMenuPlugin;
import org.diylc.plugins.layers.LayersMenuPlugin;
import org.diylc.plugins.statusbar.StatusBar;
import org.diylc.plugins.toolbox.ToolBox;
import org.diylc.presenter.Presenter;
import org.diylc.swing.ISwingUI;
import org.diylc.swing.plugins.canvas.CanvasPlugin;
import org.diylc.swing.plugins.clipboard.EditMenuPlugin;
import org.diylc.swing.plugins.file.FileMenuPlugin;
import org.diylc.swing.plugins.help.HelpMenuPlugin;
import org.diylc.swing.plugins.layers.LayersMenuPlugin;
import org.diylc.swing.plugins.statusbar.StatusBar;
import org.diylc.swing.plugins.toolbox.ToolBox;
public class MainFrame extends JFrame implements IView {
public class MainFrame extends JFrame implements IView, ISwingUI {
private static final Logger LOG = Logger.getLogger(MainFrame.class);
private static final long serialVersionUID = 1L;
@@ -69,15 +73,15 @@ public class MainFrame extends JFrame implements IView {
this.presenter = new Presenter(this);
presenter.installPlugin(new ToolBox());
presenter.installPlugin(new FileMenuPlugin());
presenter.installPlugin(new EditMenuPlugin());
presenter.installPlugin(new LayersMenuPlugin());
presenter.installPlugin(new ToolBox(this));
presenter.installPlugin(new FileMenuPlugin(this));
presenter.installPlugin(new EditMenuPlugin(this));
presenter.installPlugin(new LayersMenuPlugin(this));
// presenter.installPlugin(new OnlineManager());
presenter.installPlugin(new HelpMenuPlugin());
presenter.installPlugin(new HelpMenuPlugin(this));
presenter.installPlugin(new StatusBar());
canvasPlugin = new CanvasPlugin();
presenter.installPlugin(new StatusBar(this));
canvasPlugin = new CanvasPlugin(this);
presenter.installPlugin(canvasPlugin);
presenter.installPlugin(new FramePlugin());
@@ -170,7 +174,31 @@ public class MainFrame extends JFrame implements IView {
// IView
@Override
public void addComponent(JComponent component, int position) throws BadPositionException {
public void showMessage(String message, String title, int messageType) {
JOptionPane.showMessageDialog(this, message, title, messageType);
}
@Override
public int showConfirmDialog(String message, String title, int optionType, int messageType) {
return JOptionPane.showConfirmDialog(this, message, title, optionType, messageType);
}
private JMenu findOrCreateMenu(String menuName) {
JMenu menu;
if (menuMap.containsKey(menuName)) {
menu = menuMap.get(menuName);
} else {
menu = new JMenu(menuName);
menuMap.put(menuName, menu);
getMainMenuBar().add(menu);
}
return menu;
}
@Override
public void injectGUIComponent(JComponent component, int position) throws BadPositionException {
LOG.info(String.format("injectGUIComponent(%s, %s)", component.getClass().getName(),
position));
switch (position) {
case SwingConstants.TOP:
topPanel.add(component);
@@ -194,7 +222,9 @@ public class MainFrame extends JFrame implements IView {
}
@Override
public void addMenuAction(Action action, String menuName) {
public void injectMenuAction(Action action, String menuName) {
LOG.info(String.format("injectMenuAction(%s, %s)", action == null ? "Separator" : action
.getValue(Action.NAME), menuName));
JMenu menu = findOrCreateMenu(menuName);
if (action == null) {
menu.addSeparator();
@@ -209,7 +239,8 @@ public class MainFrame extends JFrame implements IView {
}
@Override
public void addSubmenu(String name, Icon icon, String parentMenuName) {
public void injectSubmenu(String name, Icon icon, String parentMenuName) {
LOG.info(String.format("injectSubmenu(%s, icon, %s)", name, parentMenuName));
JMenu menu = findOrCreateMenu(parentMenuName);
JMenu submenu = new JMenu(name);
submenu.setIcon(icon);
@@ -217,28 +248,6 @@ public class MainFrame extends JFrame implements IView {
menuMap.put(name, submenu);
}
@Override
public void showMessage(String message, String title, int messageType) {
JOptionPane.showMessageDialog(this, message, title, messageType);
}
@Override
public int showConfirmDialog(String message, String title, int optionType, int messageType) {
return JOptionPane.showConfirmDialog(this, message, title, optionType, messageType);
}
private JMenu findOrCreateMenu(String menuName) {
JMenu menu;
if (menuMap.containsKey(menuName)) {
menu = menuMap.get(menuName);
} else {
menu = new JMenu(menuName);
menuMap.put(menuName, menu);
getMainMenuBar().add(menu);
}
return menu;
}
class FramePlugin implements IPlugIn {
private IPlugInPort plugInPort;
@@ -266,4 +275,5 @@ public class MainFrame extends JFrame implements IView {
}
}
}
}
@@ -1,4 +1,4 @@
package org.diylc.gui.editor;
package org.diylc.swing.gui.editor;
import javax.swing.JSlider;
import javax.swing.event.ChangeEvent;
@@ -1,4 +1,4 @@
package org.diylc.gui.editor;
package org.diylc.swing.gui.editor;
import java.awt.Color;
import java.awt.Cursor;
@@ -1,4 +1,4 @@
package org.diylc.gui.editor;
package org.diylc.swing.gui.editor;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
@@ -1,4 +1,4 @@
package org.diylc.gui.editor;
package org.diylc.swing.gui.editor;
import java.awt.Color;
import java.awt.Component;
@@ -1,4 +1,4 @@
package org.diylc.gui.editor;
package org.diylc.swing.gui.editor;
import java.awt.Color;
import java.awt.Cursor;
@@ -1,4 +1,4 @@
package org.diylc.gui.editor;
package org.diylc.swing.gui.editor;
import java.awt.BorderLayout;
import java.awt.Container;
@@ -1,4 +1,4 @@
package org.diylc.gui.editor;
package org.diylc.swing.gui.editor;
import java.awt.Component;
import java.awt.Dimension;
@@ -1,4 +1,4 @@
package org.diylc.gui.editor;
package org.diylc.swing.gui.editor;
import javax.swing.JTextField;
import javax.swing.event.DocumentEvent;
@@ -1,4 +1,4 @@
package org.diylc.plugins.canvas;
package org.diylc.swing.plugins.canvas;
import java.awt.dnd.DragGestureEvent;
import java.awt.dnd.DragGestureListener;
@@ -1,4 +1,4 @@
package org.diylc.plugins.canvas;
package org.diylc.swing.plugins.canvas;
import java.awt.Graphics;
import java.awt.Graphics2D;
@@ -31,8 +31,8 @@ import javax.swing.KeyStroke;
import org.diylc.common.DrawOption;
import org.diylc.common.IPlugInPort;
import org.diylc.common.PropertyWrapper;
import org.diylc.gui.DialogFactory;
import org.diylc.gui.editor.PropertyEditorDialog;
import org.diylc.swing.gui.DialogFactory;
import org.diylc.swing.gui.editor.PropertyEditorDialog;
import com.diyfever.gui.ButtonDialog;
@@ -1,4 +1,4 @@
package org.diylc.plugins.canvas;
package org.diylc.swing.plugins.canvas;
import java.awt.Dimension;
import java.awt.Rectangle;
@@ -16,8 +16,9 @@ import org.diylc.common.IPlugIn;
import org.diylc.common.IPlugInPort;
import org.diylc.core.measures.Size;
import org.diylc.core.measures.SizeUnit;
import org.diylc.plugins.file.ProjectDrawingProvider;
import org.diylc.presenter.Presenter;
import org.diylc.swing.ISwingUI;
import org.diylc.swing.plugins.file.ProjectDrawingProvider;
import com.diyfever.gui.miscutils.ConfigurationManager;
import com.diyfever.gui.ruler.IRulerListener;
@@ -31,14 +32,17 @@ public class CanvasPlugin implements IPlugIn {
private CanvasPanel canvasPanel;
private IPlugInPort plugInPort;
public CanvasPlugin() {
private ISwingUI swingUI;
public CanvasPlugin(ISwingUI swingUI) {
this.swingUI = swingUI;
}
@Override
public void connect(IPlugInPort plugInPort) {
this.plugInPort = plugInPort;
try {
plugInPort.injectGUIComponent(getScrollPane(), SwingConstants.CENTER);
swingUI.injectGUIComponent(getScrollPane(), SwingConstants.CENTER);
} catch (BadPositionException e) {
LOG.error("Could not install canvas plugin", e);
}
@@ -1,4 +1,4 @@
package org.diylc.plugins.canvas;
package org.diylc.swing.plugins.canvas;
import java.awt.Point;
import java.awt.dnd.DragSourceDragEvent;
@@ -1,4 +1,4 @@
package org.diylc.plugins.canvas;
package org.diylc.swing.plugins.canvas;
import java.awt.Point;
import java.awt.dnd.DnDConstants;
@@ -1,4 +1,4 @@
package org.diylc.plugins.canvas;
package org.diylc.swing.plugins.canvas;
import java.awt.datatransfer.DataFlavor;
import java.awt.datatransfer.Transferable;
@@ -1,4 +1,4 @@
package org.diylc.plugins.canvas;
package org.diylc.swing.plugins.canvas;
import java.awt.Point;
import java.awt.datatransfer.DataFlavor;
@@ -1,4 +1,4 @@
package org.diylc.plugins.canvas;
package org.diylc.swing.plugins.canvas;
import java.awt.Point;
import java.awt.datatransfer.DataFlavor;
@@ -1,4 +1,4 @@
package org.diylc.plugins.clipboard;
package org.diylc.swing.plugins.clipboard;
import java.awt.Toolkit;
import java.awt.datatransfer.Clipboard;
@@ -22,9 +22,10 @@ import org.diylc.common.IPlugInPort;
import org.diylc.common.PropertyWrapper;
import org.diylc.core.IDIYComponent;
import org.diylc.core.Project;
import org.diylc.gui.DialogFactory;
import org.diylc.gui.editor.PropertyEditorDialog;
import org.diylc.images.IconLoader;
import org.diylc.swing.ISwingUI;
import org.diylc.swing.gui.DialogFactory;
import org.diylc.swing.gui.editor.PropertyEditorDialog;
import com.diyfever.gui.ButtonDialog;
import com.diyfever.gui.undo.IUndoListener;
@@ -47,7 +48,7 @@ public class EditMenuPlugin implements IPlugIn, ClipboardOwner {
private UndoHandler<Project> undoHandler;
public EditMenuPlugin() {
public EditMenuPlugin(ISwingUI swingUI) {
clipboard = Toolkit.getDefaultToolkit().getSystemClipboard();
cloner = new Cloner();
undoHandler = new UndoHandler<Project>(new IUndoListener<Project>() {
@@ -64,29 +65,29 @@ public class EditMenuPlugin implements IPlugIn, ClipboardOwner {
refreshActions();
}
});
swingUI.injectMenuAction(undoHandler.getUndoAction(), EDIT_TITLE);
swingUI.injectMenuAction(undoHandler.getRedoAction(), EDIT_TITLE);
swingUI.injectMenuAction(null, EDIT_TITLE);
// cutAction = new CutAction();
// plugInPort.injectMenuAction(cutAction, EDIT_TITLE);
copyAction = new CopyAction();
swingUI.injectMenuAction(copyAction, EDIT_TITLE);
pasteAction = new PasteAction();
swingUI.injectMenuAction(pasteAction, EDIT_TITLE);
swingUI.injectMenuAction(null, EDIT_TITLE);
swingUI.injectMenuAction(new SelectAllAction(), EDIT_TITLE);
swingUI.injectMenuAction(null, EDIT_TITLE);
swingUI.injectMenuAction(new EditSelectionAction(), EDIT_TITLE);
swingUI.injectMenuAction(new EditProjectAction(), EDIT_TITLE);
swingUI.injectMenuAction(null, EDIT_TITLE);
swingUI.injectMenuAction(new GroupAction(), EDIT_TITLE);
swingUI.injectMenuAction(new UngroupAction(), EDIT_TITLE);
}
@Override
public void connect(IPlugInPort plugInPort) {
this.plugInPort = plugInPort;
plugInPort.injectMenuAction(undoHandler.getUndoAction(), EDIT_TITLE);
plugInPort.injectMenuAction(undoHandler.getRedoAction(), EDIT_TITLE);
plugInPort.injectMenuAction(null, EDIT_TITLE);
// cutAction = new CutAction();
// plugInPort.injectMenuAction(cutAction, EDIT_TITLE);
copyAction = new CopyAction();
plugInPort.injectMenuAction(copyAction, EDIT_TITLE);
pasteAction = new PasteAction();
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);
plugInPort.injectMenuAction(new UngroupAction(), EDIT_TITLE);
refreshActions();
}
@@ -1,4 +1,4 @@
package org.diylc.plugins.file;
package org.diylc.swing.plugins.file;
import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
@@ -15,8 +15,8 @@ import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import org.diylc.gui.DialogFactory;
import org.diylc.images.IconLoader;
import org.diylc.swing.gui.DialogFactory;
import com.diyfever.gui.export.TableExporter;
import com.diyfever.gui.objecttable.ObjectListTable;
@@ -1,4 +1,4 @@
package org.diylc.plugins.file;
package org.diylc.swing.plugins.file;
public class BomEntry {
@@ -1,4 +1,4 @@
package org.diylc.plugins.file;
package org.diylc.swing.plugins.file;
import java.util.ArrayList;
import java.util.Collections;
@@ -1,4 +1,4 @@
package org.diylc.plugins.file;
package org.diylc.swing.plugins.file;
import java.awt.event.ActionEvent;
import java.awt.print.PrinterException;
@@ -13,9 +13,10 @@ import org.diylc.common.EventType;
import org.diylc.common.IPlugIn;
import org.diylc.common.IPlugInPort;
import org.diylc.common.PropertyWrapper;
import org.diylc.gui.DialogFactory;
import org.diylc.gui.editor.PropertyEditorDialog;
import org.diylc.images.IconLoader;
import org.diylc.swing.ISwingUI;
import org.diylc.swing.gui.DialogFactory;
import org.diylc.swing.gui.editor.PropertyEditorDialog;
import com.diyfever.gui.ButtonDialog;
import com.diyfever.gui.IDrawingProvider;
@@ -36,29 +37,29 @@ public class FileMenuPlugin implements IPlugIn {
private ProjectDrawingProvider drawingProvider;
private TraceMaskDrawingProvider traceMaskDrawingProvider;
public FileMenuPlugin(ISwingUI swingUI) {
swingUI.injectMenuAction(new NewAction(), FILE_TITLE);
swingUI.injectMenuAction(new OpenAction(), FILE_TITLE);
swingUI.injectMenuAction(new SaveAction(), FILE_TITLE);
swingUI.injectMenuAction(new SaveAsAction(), FILE_TITLE);
swingUI.injectMenuAction(null, FILE_TITLE);
swingUI.injectMenuAction(new ExportPDFAction(drawingProvider), FILE_TITLE);
swingUI.injectMenuAction(new ExportPNGAction(drawingProvider), FILE_TITLE);
swingUI.injectMenuAction(new PrintAction(drawingProvider), FILE_TITLE);
swingUI.injectSubmenu(TRACE_MASK_TITLE, IconLoader.TraceMask.getIcon(), FILE_TITLE);
swingUI.injectMenuAction(new ExportPDFAction(traceMaskDrawingProvider), TRACE_MASK_TITLE);
swingUI.injectMenuAction(new ExportPNGAction(traceMaskDrawingProvider), TRACE_MASK_TITLE);
swingUI.injectMenuAction(new PrintAction(traceMaskDrawingProvider), TRACE_MASK_TITLE);
swingUI.injectMenuAction(new CreateBomAction(), FILE_TITLE);
swingUI.injectMenuAction(null, FILE_TITLE);
swingUI.injectMenuAction(new ExitAction(), FILE_TITLE);
}
@Override
public void connect(IPlugInPort plugInPort) {
this.plugInPort = plugInPort;
this.drawingProvider = new ProjectDrawingProvider(plugInPort, false);
this.traceMaskDrawingProvider = new TraceMaskDrawingProvider(plugInPort);
plugInPort.injectMenuAction(new NewAction(), FILE_TITLE);
plugInPort.injectMenuAction(new OpenAction(), FILE_TITLE);
plugInPort.injectMenuAction(new SaveAction(), FILE_TITLE);
plugInPort.injectMenuAction(new SaveAsAction(), FILE_TITLE);
plugInPort.injectMenuAction(null, FILE_TITLE);
plugInPort.injectMenuAction(new ExportPDFAction(drawingProvider), FILE_TITLE);
plugInPort.injectMenuAction(new ExportPNGAction(drawingProvider), FILE_TITLE);
plugInPort.injectMenuAction(new PrintAction(drawingProvider), FILE_TITLE);
plugInPort.injectSubmenu(TRACE_MASK_TITLE, IconLoader.TraceMask.getIcon(), FILE_TITLE);
plugInPort
.injectMenuAction(new ExportPDFAction(traceMaskDrawingProvider), TRACE_MASK_TITLE);
plugInPort
.injectMenuAction(new ExportPNGAction(traceMaskDrawingProvider), TRACE_MASK_TITLE);
plugInPort.injectMenuAction(new PrintAction(traceMaskDrawingProvider), TRACE_MASK_TITLE);
plugInPort.injectMenuAction(new CreateBomAction(), FILE_TITLE);
plugInPort.injectMenuAction(null, FILE_TITLE);
plugInPort.injectMenuAction(new ExitAction(), FILE_TITLE);
}
class NewAction extends AbstractAction {
@@ -87,7 +88,8 @@ public class FileMenuPlugin implements IPlugIn {
// Save default values.
for (PropertyWrapper property : editor.getDefaultedProperties()) {
if (property.getValue() != null) {
plugInPort.setProjectDefaultPropertyValue(property.getName(), property.getValue());
plugInPort.setProjectDefaultPropertyValue(property.getName(), property
.getValue());
}
}
}
@@ -1,4 +1,4 @@
package org.diylc.plugins.file;
package org.diylc.swing.plugins.file;
import java.awt.Dimension;
import java.awt.Graphics;
@@ -1,4 +1,4 @@
package org.diylc.plugins.file;
package org.diylc.swing.plugins.file;
import java.awt.Color;
import java.awt.Dimension;
@@ -11,14 +11,11 @@ import java.io.File;
import java.io.FileInputStream;
import java.util.EnumSet;
import javax.swing.Action;
import javax.swing.Icon;
import javax.swing.JComponent;
import javax.swing.JFileChooser;
import javax.swing.JLabel;
import javax.swing.JPanel;
import org.diylc.common.BadPositionException;
import org.diylc.common.DrawOption;
import org.diylc.common.IPlugInPort;
import org.diylc.core.IView;
@@ -52,19 +49,6 @@ public class ProjectPreview extends JPanel implements PropertyChangeListener, IF
setPreferredSize(new Dimension(140, 128));
presenter = new Presenter(new IView() {
@Override
public void addComponent(JComponent component, int position)
throws BadPositionException {
}
@Override
public void addMenuAction(Action action, String menuName) {
}
@Override
public void addSubmenu(String name, Icon icon, String parentMenuName) {
}
@Override
public int showConfirmDialog(String message, String title, int optionType,
int messageType) {
@@ -1,4 +1,4 @@
package org.diylc.plugins.file;
package org.diylc.swing.plugins.file;
import java.awt.Dimension;
import java.awt.Graphics;
@@ -1,4 +1,4 @@
package org.diylc.plugins.help;
package org.diylc.swing.plugins.help;
import java.awt.event.ActionEvent;
import java.util.EnumSet;
@@ -9,8 +9,9 @@ import javax.swing.Icon;
import org.diylc.common.EventType;
import org.diylc.common.IPlugIn;
import org.diylc.common.IPlugInPort;
import org.diylc.gui.DialogFactory;
import org.diylc.images.IconLoader;
import org.diylc.swing.ISwingUI;
import org.diylc.swing.gui.DialogFactory;
import com.diyfever.gui.AboutDialog;
import com.diyfever.gui.miscutils.Utils;
@@ -34,24 +35,26 @@ public class HelpMenuPlugin implements IPlugIn {
private IPlugInPort plugInPort;
private AboutDialog aboutDialog;
public HelpMenuPlugin(ISwingUI swingUI) {
swingUI.injectMenuAction(new NavigateURLAction("User Manual", IconLoader.Manual.getIcon(),
MANUAL_URL), HELP_TITLE);
swingUI.injectMenuAction(new NavigateURLAction("FAQ", IconLoader.Faq.getIcon(), FAQ_URL),
HELP_TITLE);
swingUI.injectMenuAction(new NavigateURLAction("Component API", IconLoader.Component
.getIcon(), COMPONENT_URL), HELP_TITLE);
swingUI.injectMenuAction(new NavigateURLAction("Plugin API", IconLoader.Plugin.getIcon(),
PLUGIN_URL), HELP_TITLE);
swingUI.injectMenuAction(new NavigateURLAction("Submit a Bug", IconLoader.Bug.getIcon(),
BUG_URL), HELP_TITLE);
swingUI.injectMenuAction(null, HELP_TITLE);
swingUI.injectMenuAction(new NavigateURLAction("Donate", IconLoader.Donate.getIcon(),
DONATE_URL), HELP_TITLE);
swingUI.injectMenuAction(new AboutAction(), HELP_TITLE);
}
@Override
public void connect(IPlugInPort plugInPort) {
this.plugInPort = plugInPort;
plugInPort.injectMenuAction(new NavigateURLAction("User Manual", IconLoader.Manual
.getIcon(), MANUAL_URL), HELP_TITLE);
plugInPort.injectMenuAction(
new NavigateURLAction("FAQ", IconLoader.Faq.getIcon(), FAQ_URL), HELP_TITLE);
plugInPort.injectMenuAction(new NavigateURLAction("Component API", IconLoader.Component
.getIcon(), COMPONENT_URL), HELP_TITLE);
plugInPort.injectMenuAction(new NavigateURLAction("Plugin API",
IconLoader.Plugin.getIcon(), PLUGIN_URL), HELP_TITLE);
plugInPort.injectMenuAction(new NavigateURLAction("Submit a Bug", IconLoader.Bug.getIcon(),
BUG_URL), HELP_TITLE);
plugInPort.injectMenuAction(null, HELP_TITLE);
plugInPort.injectMenuAction(new NavigateURLAction("Donate", IconLoader.Donate.getIcon(),
DONATE_URL), HELP_TITLE);
plugInPort.injectMenuAction(new AboutAction(), HELP_TITLE);
}
@Override
@@ -1,4 +1,4 @@
package org.diylc.plugins.layers;
package org.diylc.swing.plugins.layers;
import java.awt.event.ActionEvent;
import java.util.EnumSet;
@@ -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.swing.ISwingUI;
public class LayersMenuPlugin implements IPlugIn {
@@ -21,13 +22,7 @@ public class LayersMenuPlugin implements IPlugIn {
private IPlugInPort plugInPort;
private Map<Layer, Action> lockActionMap;
public LayersMenuPlugin() {
}
@Override
public void connect(IPlugInPort plugInPort) {
this.plugInPort = plugInPort;
public LayersMenuPlugin(ISwingUI swingUI) {
lockActionMap = new HashMap<Layer, Action>();
for (Layer layer : Layer.values()) {
final int zOrder = layer.getZOrder();
@@ -43,10 +38,15 @@ public class LayersMenuPlugin implements IPlugIn {
};
action.putValue(IPlugInPort.CHECK_BOX_MENU_ITEM, true);
lockActionMap.put(layer, action);
plugInPort.injectMenuAction(action, LOCK_LAYERS_TITLE);
swingUI.injectMenuAction(action, LOCK_LAYERS_TITLE);
}
}
@Override
public void connect(IPlugInPort plugInPort) {
this.plugInPort = plugInPort;
}
@Override
public EnumSet<EventType> getSubscribedEventTypes() {
return EnumSet.of(EventType.LAYER_STATE_CHANGED);
@@ -1,4 +1,4 @@
package org.diylc.plugins.online;
package org.diylc.swing.plugins.online;
import java.awt.event.ActionEvent;
import java.util.EnumSet;
@@ -9,12 +9,12 @@ import javax.swing.SwingWorker;
import org.diylc.common.EventType;
import org.diylc.common.IPlugIn;
import org.diylc.common.IPlugInPort;
import org.diylc.gui.DialogFactory;
import org.diylc.images.IconLoader;
import org.diylc.plugins.online.presenter.LibraryPresenter;
import org.diylc.plugins.online.view.LoginDialog;
import org.diylc.plugins.online.view.NewUserDialog;
import org.diylc.plugins.online.view.UploadDialog;
import org.diylc.swing.gui.DialogFactory;
import org.diylc.swing.plugins.online.presenter.LibraryPresenter;
import org.diylc.swing.plugins.online.view.LoginDialog;
import org.diylc.swing.plugins.online.view.NewUserDialog;
import org.diylc.swing.plugins.online.view.UploadDialog;
import com.diyfever.gui.ProgressDialog;
@@ -32,13 +32,13 @@ public class OnlineManager implements IPlugIn {
initialize();
plugInPort.injectMenuAction(new LibraryAction(), ONLINE_TITLE);
plugInPort.injectMenuAction(null, ONLINE_TITLE);
plugInPort.injectMenuAction(new LoginAction(), ONLINE_TITLE);
plugInPort.injectMenuAction(new CreateAccountAction(), ONLINE_TITLE);
plugInPort.injectMenuAction(null, ONLINE_TITLE);
plugInPort.injectMenuAction(new UploadAction(), ONLINE_TITLE);
plugInPort.injectMenuAction(new ManageProjectsAction(), ONLINE_TITLE);
// plugInPort.injectMenuAction(new LibraryAction(), ONLINE_TITLE);
// plugInPort.injectMenuAction(null, ONLINE_TITLE);
// plugInPort.injectMenuAction(new LoginAction(), ONLINE_TITLE);
// plugInPort.injectMenuAction(new CreateAccountAction(), ONLINE_TITLE);
// plugInPort.injectMenuAction(null, ONLINE_TITLE);
// plugInPort.injectMenuAction(new UploadAction(), ONLINE_TITLE);
// plugInPort.injectMenuAction(new ManageProjectsAction(), ONLINE_TITLE);
}
private void initialize() {
@@ -1,7 +1,7 @@
package org.diylc.plugins.online;
package org.diylc.swing.plugins.online;
import org.apache.log4j.BasicConfigurator;
import org.diylc.plugins.online.presenter.LibraryPresenter;
import org.diylc.swing.plugins.online.presenter.LibraryPresenter;
public class Test {
@@ -1,4 +1,4 @@
package org.diylc.plugins.online.model;
package org.diylc.swing.plugins.online.model;
import java.awt.event.ActionEvent;
import java.io.Serializable;
@@ -1,4 +1,4 @@
package org.diylc.plugins.online.presenter;
package org.diylc.swing.plugins.online.presenter;
public class AlreadyExistsException extends Exception {
@@ -1,4 +1,4 @@
package org.diylc.plugins.online.presenter;
package org.diylc.swing.plugins.online.presenter;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
@@ -10,7 +10,7 @@ import java.util.List;
import java.util.Map;
import org.apache.log4j.Logger;
import org.diylc.plugins.online.model.ProjectEntity;
import org.diylc.swing.plugins.online.model.ProjectEntity;
public class LibraryPresenter {
@@ -1,4 +1,4 @@
package org.diylc.plugins.online.presenter;
package org.diylc.swing.plugins.online.presenter;
import java.sql.Connection;
import java.sql.Driver;
@@ -1,4 +1,4 @@
package org.diylc.plugins.online.presenter;
package org.diylc.swing.plugins.online.presenter;
public class NotConnectedException extends Exception {
@@ -1,4 +1,4 @@
package org.diylc.plugins.online.presenter;
package org.diylc.swing.plugins.online.presenter;
public class NotExistsException extends Exception {
@@ -1,4 +1,4 @@
package org.diylc.plugins.online.presenter;
package org.diylc.swing.plugins.online.presenter;
public class NotLoggedInException extends Exception {
@@ -1,4 +1,4 @@
package org.diylc.plugins.online.view;
package org.diylc.swing.plugins.online.view;
import javax.swing.JFrame;
@@ -1,4 +1,4 @@
package org.diylc.plugins.online.view;
package org.diylc.swing.plugins.online.view;
import java.awt.Dimension;
import java.awt.GridBagConstraints;
@@ -1,4 +1,4 @@
package org.diylc.plugins.online.view;
package org.diylc.swing.plugins.online.view;
import java.awt.Dimension;
import java.awt.GridBagConstraints;
@@ -1,4 +1,4 @@
package org.diylc.plugins.online.view;
package org.diylc.swing.plugins.online.view;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
@@ -1,4 +1,4 @@
package org.diylc.plugins.statusbar;
package org.diylc.swing.plugins.statusbar;
import java.awt.BorderLayout;
import java.awt.GridBagConstraints;
@@ -24,6 +24,7 @@ import javax.swing.JPanel;
import javax.swing.SwingUtilities;
import javax.swing.UIManager;
import org.apache.log4j.Logger;
import org.diylc.common.BadPositionException;
import org.diylc.common.ComponentSelection;
import org.diylc.common.ComponentType;
@@ -32,6 +33,8 @@ import org.diylc.common.IPlugIn;
import org.diylc.common.IPlugInPort;
import org.diylc.core.IDIYComponent;
import org.diylc.presenter.Presenter;
import org.diylc.swing.ISwingUI;
import org.diylc.swing.gui.MainFrame;
import com.diyfever.gui.MemoryBar;
import com.diyfever.gui.miscutils.ConfigurationManager;
@@ -43,8 +46,10 @@ public class StatusBar extends JPanel implements IPlugIn {
private static final long serialVersionUID = 1L;
private static final Logger LOG = Logger.getLogger(StatusBar.class);
public static String UPDATE_URL = "http://www.diy-fever.com/update.xml";
private static final Format sizeFormat = new DecimalFormat("0.00");
private static final Format sizeFormat = new DecimalFormat("0.##");
private JComboBox zoomBox;
private UpdateLabel updateLabel;
@@ -61,11 +66,16 @@ public class StatusBar extends JPanel implements IPlugIn {
private List<String> selectedComponentNames;
private List<String> stuckComponentNames;
public StatusBar() {
public StatusBar(ISwingUI swingUI) {
super();
// setLayout(new FlowLayout(FlowLayout.TRAILING));
setLayout(new GridBagLayout());
try {
swingUI.injectGUIComponent(this, SwingUtilities.BOTTOM);
} catch (BadPositionException e) {
LOG.error("Could not install status bar", e);
}
}
private JComboBox getZoomBox() {
@@ -164,13 +174,6 @@ public class StatusBar extends JPanel implements IPlugIn {
this.plugInPort = plugInPort;
layoutComponents();
try {
plugInPort.injectGUIComponent(this, SwingUtilities.BOTTOM);
} catch (BadPositionException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
@Override
@@ -1,4 +1,4 @@
package org.diylc.plugins.toolbox;
package org.diylc.swing.plugins.toolbox;
import java.awt.Insets;
import java.awt.dnd.DnDConstants;
@@ -1,4 +1,4 @@
package org.diylc.plugins.toolbox;
package org.diylc.swing.plugins.toolbox;
import java.awt.BorderLayout;
import java.awt.Component;
@@ -1,24 +1,34 @@
package org.diylc.plugins.toolbox;
package org.diylc.swing.plugins.toolbox;
import java.util.EnumSet;
import javax.swing.SwingConstants;
import org.apache.log4j.Logger;
import org.diylc.common.BadPositionException;
import org.diylc.common.EventType;
import org.diylc.common.IPlugIn;
import org.diylc.common.IPlugInPort;
import org.diylc.swing.ISwingUI;
import org.diylc.swing.plugins.statusbar.StatusBar;
public class ToolBox implements IPlugIn {
private static final Logger LOG = Logger.getLogger(StatusBar.class);
private ISwingUI swingUI;
public ToolBox(ISwingUI swingUI) {
this.swingUI = swingUI;
}
@Override
public void connect(IPlugInPort plugInPort) {
try {
plugInPort.injectGUIComponent(new ComponentTabbedPane(plugInPort), SwingConstants.TOP);
swingUI.injectGUIComponent(new ComponentTabbedPane(plugInPort), SwingConstants.TOP);
} catch (BadPositionException e) {
// TODO Auto-generated catch block
e.printStackTrace();
LOG.error("Could not install the toolbox", e);
}
}
@@ -1,4 +1,4 @@
package org.diylc.plugins.toolbox;
package org.diylc.swing.plugins.toolbox;
import java.awt.Cursor;
import java.awt.datatransfer.StringSelection;
@@ -1,4 +1,4 @@
package org.diylc.plugins.toolbox;
package org.diylc.swing.plugins.toolbox;
import java.awt.dnd.DragSourceDragEvent;
import java.awt.dnd.DragSourceDropEvent;
@@ -2,7 +2,7 @@ package org.diylc;
import java.util.List;
import org.diylc.plugins.online.model.ProjectEntity;
import org.diylc.swing.plugins.online.model.ProjectEntity;
import com.diyfever.httpproxy.ParamName;
@@ -9,7 +9,7 @@ import javax.swing.JFrame;
import javax.swing.JScrollPane;
import org.apache.log4j.BasicConfigurator;
import org.diylc.plugins.online.model.ProjectEntity;
import org.diylc.swing.plugins.online.model.ProjectEntity;
import com.diyfever.gui.objecttable.IActionProcessor;
import com.diyfever.gui.objecttable.ObjectListTable;
@@ -4,7 +4,7 @@ import java.util.ArrayList;
import java.util.List;
import org.apache.log4j.BasicConfigurator;
import org.diylc.plugins.online.model.ProjectEntity;
import org.diylc.swing.plugins.online.model.ProjectEntity;
import com.diyfever.httpproxy.ParamName;
import com.diyfever.httpproxy.PhpFlatProxy;
@@ -9,8 +9,8 @@ import org.diylc.components.MockDIYComponent;
import org.diylc.core.IDIYComponent;
import org.diylc.core.measures.Capacitance;
import org.diylc.core.measures.CapacitanceUnit;
import org.diylc.plugins.file.BomEntry;
import org.diylc.plugins.file.BomMaker;
import org.diylc.swing.plugins.file.BomEntry;
import org.diylc.swing.plugins.file.BomMaker;
import org.junit.Test;
public class BomMakerTest {