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 992af535..59d99305 100644 --- a/ diy-layout-creator --username bancika@gmail.com/DIYLC/config.xml +++ b/ diy-layout-creator --username bancika@gmail.com/DIYLC/config.xml @@ -1,15 +1,15 @@ - lastPath - C:\Documents and Settings\Branislav Stojkovic\Desktop + metric + true zoom 1.0 - metric - true + lastPath + C:\Documents and Settings\Branislav Stojkovic\Desktop default.org.diylc.components.misc.Label:Color 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 75535d00..8c87bfa8 100644 Binary files a/ diy-layout-creator --username bancika@gmail.com/DIYLC/library/main.jar and b/ diy-layout-creator --username bancika@gmail.com/DIYLC/library/main.jar differ diff --git a/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/presenter/G2DWrapper.java b/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/presenter/G2DWrapper.java index 5c09ffc2..e8c78941 100644 --- a/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/presenter/G2DWrapper.java +++ b/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/presenter/G2DWrapper.java @@ -492,8 +492,9 @@ class G2DWrapper extends Graphics2D implements IDrawingObserver { @Override public boolean drawImage(Image img, int x, int y, ImageObserver observer) { - // FIXME: map - return canvasGraphics.drawImage(img, x, y, observer); + boolean result = canvasGraphics.drawImage(img, x, y, observer); + appendShape(new Rectangle2D.Double(x, y, img.getWidth(observer), img.getHeight(observer))); + return result; } @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 a6812948..badd43ce 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 @@ -709,7 +709,7 @@ public class Presenter implements IPlugInPort { controlPoints[index] = null; } } - System.out.println(Arrays.deepToString(controlPoints)); + for (int i = 0; i < controlPoints.length - 1; i++) { for (int j = i + 1; j < controlPoints.length; j++) { if (controlPoints[i] != null && controlPoints[j] != null diff --git a/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/swing/gui/editor/FieldEditorFactory.java b/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/swing/gui/editor/FieldEditorFactory.java index 3743aed6..0e6ac86a 100644 --- a/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/swing/gui/editor/FieldEditorFactory.java +++ b/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/swing/gui/editor/FieldEditorFactory.java @@ -3,6 +3,7 @@ package org.diylc.swing.gui.editor; import java.awt.Color; import java.awt.Component; +import javax.swing.ImageIcon; import javax.swing.JLabel; import org.apache.log4j.Logger; @@ -26,6 +27,10 @@ public class FieldEditorFactory { MeasureEditor editor = new MeasureEditor(property); return editor; } + if (ImageIcon.class.isAssignableFrom(property.getType())) { + ImageEditor editor = new ImageEditor(property); + return editor; + } if (property.getType().isEnum()) { EnumEditor editor = new EnumEditor(property); return editor; diff --git a/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/swing/gui/editor/ImageEditor.java b/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/swing/gui/editor/ImageEditor.java new file mode 100644 index 00000000..552e519f --- /dev/null +++ b/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/swing/gui/editor/ImageEditor.java @@ -0,0 +1,44 @@ +package org.diylc.swing.gui.editor; + +import java.awt.Color; +import java.awt.event.ActionListener; +import java.io.File; + +import javax.swing.ImageIcon; +import javax.swing.JButton; + +import org.diylc.common.PropertyWrapper; +import org.diylc.swing.gui.DialogFactory; +import org.diylc.swing.plugins.file.FileFilterEnum; + +public class ImageEditor extends JButton { + + private static final long serialVersionUID = 1L; + + public ImageEditor(final PropertyWrapper property) { + super("Click to load file"); + addActionListener(new ActionListener() { + + @Override + public void actionPerformed(java.awt.event.ActionEvent e) { + File file = DialogFactory.getInstance().showOpenDialog( + FileFilterEnum.IMAGES.getFilter(), null, + FileFilterEnum.IMAGES.getExtensions()[0], null); + if (file != null) { + ImageIcon image = new ImageIcon(file.getAbsolutePath()); + property.setValue(image); + } + } + }); + } + + @Override + public void setBackground(Color bg) { + if (bg.getRed() < 127 || bg.getBlue() < 127 || bg.getGreen() < 127) { + setForeground(Color.white); + } else { + setForeground(Color.black); + } + super.setBackground(bg); + } +} diff --git a/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/swing/plugins/file/FileFilterEnum.java b/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/swing/plugins/file/FileFilterEnum.java index eb306edc..508ad906 100644 --- a/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/swing/plugins/file/FileFilterEnum.java +++ b/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/swing/plugins/file/FileFilterEnum.java @@ -4,11 +4,12 @@ import java.io.File; import javax.swing.filechooser.FileFilter; -enum FileFilterEnum { +public enum FileFilterEnum { PNG("PNG Images (*.png)", "png"), PDF("PDF Files (*.pdf)", "pdf"), DIY( "DIY Project Files (*.diy)", "diy"), EXCEL("Excel Workbooks (*.xls)", "xls"), CSV( - "Comma Separated Files (*.csv)", "csv"), HTML("HTML Files (*.html)", "html"); + "Comma Separated Files (*.csv)", "csv"), HTML("HTML Files (*.html)", "html"), IMAGES( + "Image Files (*.png, *.jpg, *.gif)", "png", "jpg", "gif"); FileFilter filter; String[] extensions; 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 72d0fc74..b716b555 100644 --- a/ diy-layout-creator --username bancika@gmail.com/DIYLC/update.xml +++ b/ diy-layout-creator --username bancika@gmail.com/DIYLC/update.xml @@ -1,56 +1,72 @@ - - - - 3 - 0 - 4 - - 2011-01-26 19:48:13.687 CET - - - - BUG_FIX - Copy/paste between two instances of the application - - - BUG_FIX - Parsing numerical values in countries that use comma as decimal separator - - - BUG_FIX - Dragging sticky points affects selectability of objects - - - BUG_FIX - Click is sometimes not registered while adding a new component - - - BUG_FIX - Fixed NPE when using default values - - - IMPROVEMENT - Allow shape control points of curves to overlap - - - IMPROVEMENT - Added DIL IC first pin indentation - - - IMPROVEMENT - Added transparency to the potentiometer - - - IMPROVEMENT - Reduced number of layers - - - NEW_FEATURE - Added Label component - - - http://code.google.com/p/diy-layout-creator/downloads/list - - + + + + 3 + 0 + 4 + + 2011-01-26 19:48:13.687 CET + + + + BUG_FIX + Copy/paste between two instances of the + application + + + BUG_FIX + Parsing numerical values in countries that use + comma as decimal separator + + + BUG_FIX + Dragging sticky points affects selectability + of objects + + + BUG_FIX + Click is sometimes not registered while adding a + new component + + + BUG_FIX + Fixed NPE when using default values + + + IMPROVEMENT + Allow shape control points of curves to overlap + + + + IMPROVEMENT + Added DIL IC first pin indentation + + + IMPROVEMENT + Added transparency to the potentiometer + + + + IMPROVEMENT + Reduced number of layers + + + IMPROVEMENT + Import from v1 files can now read label and + electrolytic capacitor components and trace/pad colors + + + NEW_FEATURE + Added label component + + + NEW_FEATURE + Added image component + + + http://code.google.com/p/diy-layout-creator/downloads/list + + + \ No newline at end of file diff --git a/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/misc/Image.java b/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/misc/Image.java new file mode 100644 index 00000000..93c503ac --- /dev/null +++ b/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/misc/Image.java @@ -0,0 +1,112 @@ +package org.diylc.components.misc; + +import java.awt.Graphics2D; +import java.awt.Point; + +import javax.swing.ImageIcon; + +import org.diylc.components.AbstractComponent; +import org.diylc.core.ComponentState; +import org.diylc.core.IDIYComponent; +import org.diylc.core.IDrawingObserver; +import org.diylc.core.Project; +import org.diylc.core.VisibilityPolicy; +import org.diylc.core.annotations.ComponentDescriptor; +import org.diylc.core.annotations.EditableProperty; + +@ComponentDescriptor(name = "Image", author = "Branislav Stojkovic", category = "Misc", description = "User defined image", instanceNamePrefix = "Img", zOrder = IDIYComponent.TEXT, stretchable = false) +public class Image extends AbstractComponent { + + private static final long serialVersionUID = 1L; + public static String DEFAULT_TEXT = "Double click to edit text"; + private static ImageIcon ICON; + private static byte DEFAULT_SCALE = 50; + + static { + String name = "image.png"; + java.net.URL imgURL = Image.class.getResource(name); + if (imgURL != null) { + ICON = new ImageIcon(imgURL, name); + } + } + + private Point point = new Point(0, 0); + private ImageIcon image = ICON; + private byte scale = 50; + + @Override + public void draw(Graphics2D g2d, ComponentState componentState, Project project, + IDrawingObserver drawingObserver) { + double s = 1d * scale / DEFAULT_SCALE; + g2d.scale(s, s); + g2d.drawImage(image.getImage(), (int) (point.x / s), (int) (point.y / s), null); + if (componentState == ComponentState.SELECTED) { + g2d.setColor(SELECTION_COLOR); + g2d.drawRect((int) (point.x / s), (int) (point.y / s), image.getIconWidth(), image + .getIconHeight()); + } + } + + @Override + public void drawIcon(Graphics2D g2d, int width, int height) { + g2d.drawImage(ICON.getImage(), point.x, point.y, null); + } + + @Override + public int getControlPointCount() { + return 1; + } + + @Override + public Point getControlPoint(int index) { + return point; + } + + @Override + public boolean isControlPointSticky(int index) { + return false; + } + + @Override + public VisibilityPolicy getControlPointVisibilityPolicy(int index) { + return VisibilityPolicy.NEVER; + } + + @Override + public void setControlPoint(Point point, int index) { + this.point.setLocation(point); + } + + @EditableProperty(defaultable = false) + public ImageIcon getImage() { + return image; + } + + public void setImage(ImageIcon image) { + this.image = image; + } + + @EditableProperty(defaultable = false) + public byte getScale() { + return scale; + } + + public void setScale(byte scale) { + this.scale = scale; + } + + @Override + public String getName() { + return super.getName(); + } + + @Deprecated + @Override + public Void getValue() { + return null; + } + + @Override + public void setValue(Void value) { + } +} diff --git a/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/misc/image.png b/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/misc/image.png new file mode 100644 index 00000000..b663869f Binary files /dev/null and b/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/misc/image.png differ