diff --git a/ diy-layout-creator --username bancika@gmail.com/DIYLC/lib/bancika-gui-framework.jar b/ diy-layout-creator --username bancika@gmail.com/DIYLC/lib/bancika-gui-framework.jar index fa244bf0..af9ef5c3 100644 Binary files a/ diy-layout-creator --username bancika@gmail.com/DIYLC/lib/bancika-gui-framework.jar and b/ diy-layout-creator --username bancika@gmail.com/DIYLC/lib/bancika-gui-framework.jar differ 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 02a165b2..960b7826 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/swing/gui/editor/FieldEditorFactory.java b/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/swing/gui/editor/FieldEditorFactory.java index 21251dee..1eca8238 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 @@ -2,6 +2,7 @@ package org.diylc.swing.gui.editor; import java.awt.Color; import java.awt.Component; +import java.awt.Font; import javax.swing.ImageIcon; import javax.swing.JLabel; @@ -45,6 +46,15 @@ public class FieldEditorFactory { BooleanEditor editor = new BooleanEditor(property); return editor; } + if (Font.class.isAssignableFrom(property.getType())) { + FontEditor editor = new FontEditor(property); + return editor; + } + if (Integer.class.isAssignableFrom(property.getType()) + || int.class.isAssignableFrom(property.getType())) { + IntEditor editor = new IntEditor(property); + return editor; + } LOG.error("Unrecognized parameter type: " + property.getType().getName()); return new JLabel("Unrecognized"); } diff --git a/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/swing/gui/editor/FontEditor.java b/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/swing/gui/editor/FontEditor.java index bac4ee25..7c181a0d 100644 --- a/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/swing/gui/editor/FontEditor.java +++ b/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/swing/gui/editor/FontEditor.java @@ -1,51 +1,33 @@ package org.diylc.swing.gui.editor; -import java.awt.Color; -import java.awt.Cursor; -import java.awt.event.MouseAdapter; -import java.awt.event.MouseEvent; - -import javax.swing.BorderFactory; -import javax.swing.JColorChooser; -import javax.swing.JLabel; -import javax.swing.SwingConstants; +import java.awt.Font; +import java.awt.event.ItemEvent; +import java.awt.event.ItemListener; import org.diylc.common.PropertyWrapper; +import com.diyfever.gui.FontChooserComboBox; -public class FontEditor extends JLabel { +public class FontEditor extends FontChooserComboBox { private static final long serialVersionUID = 1L; - public FontEditor(final PropertyWrapper property) { - super("Click to edit"); - setOpaque(true); - setHorizontalAlignment(SwingConstants.CENTER); - setBorder(BorderFactory.createEtchedBorder()); - setBackground((Color) property.getValue()); - setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR)); - addMouseListener(new MouseAdapter() { + private final PropertyWrapper property; + + public FontEditor(PropertyWrapper property) { + this.property = property; + setSelectedItem(((Font) property.getValue()).getName()); + addItemListener(new ItemListener() { @Override - public void mouseClicked(MouseEvent e) { -// JFo - Color newColor = JColorChooser.showDialog(FontEditor.this, "Choose Color", - getBackground()); - if (newColor != null) { - property.setValue(newColor); - setBackground(newColor); + public void itemStateChanged(ItemEvent e) { + if (e.getStateChange() == ItemEvent.SELECTED) { + Font oldFont = (Font) FontEditor.this.property.getValue(); + Font newFont = new Font(getSelectedItem().toString(), oldFont.getStyle(), + oldFont.getSize()); + FontEditor.this.property.setValue(newFont); } } }); } - - @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/gui/editor/IntEditor.java b/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/swing/gui/editor/IntEditor.java new file mode 100644 index 00000000..7b3bbbbd --- /dev/null +++ b/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/swing/gui/editor/IntEditor.java @@ -0,0 +1,26 @@ +package org.diylc.swing.gui.editor; + +import java.awt.BorderLayout; +import java.beans.PropertyChangeEvent; +import java.beans.PropertyChangeListener; + +import org.diylc.common.PropertyWrapper; + +import com.diyfever.gui.DoubleTextField; + +public class IntEditor extends DoubleTextField { + + private static final long serialVersionUID = 1L; + + public IntEditor(final PropertyWrapper property) { + setLayout(new BorderLayout()); + setValue((double) (Integer) property.getValue()); + addPropertyChangeListener(DoubleTextField.VALUE_PROPERTY, new PropertyChangeListener() { + + @Override + public void propertyChange(PropertyChangeEvent evt) { + property.setValue(((Double) evt.getNewValue()).intValue()); + } + }); + } +} 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 f0096151..1155f125 100644 --- a/ diy-layout-creator --username bancika@gmail.com/DIYLC/update.xml +++ b/ diy-layout-creator --username bancika@gmail.com/DIYLC/update.xml @@ -302,6 +302,10 @@ NEW_FEATURE Vertical vero board + + NEW_FEATURE + Label has editable font + http://code.google.com/p/diy-layout-creator/downloads/list diff --git a/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/misc/Label.java b/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/misc/Label.java index ff2d593e..8d70690c 100644 --- a/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/misc/Label.java +++ b/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/misc/Label.java @@ -12,7 +12,6 @@ import org.diylc.core.ComponentState; import org.diylc.core.IDIYComponent; import org.diylc.core.IDrawingObserver; import org.diylc.core.Project; -import org.diylc.core.Theme; import org.diylc.core.VisibilityPolicy; import org.diylc.core.annotations.ComponentDescriptor; import org.diylc.core.annotations.EditableProperty; @@ -73,6 +72,69 @@ public class Label extends AbstractComponent { g2d.drawString("Abc", x, y); } + @EditableProperty + public Font getFont() { + return font; + } + + public void setFont(Font font) { + this.font = font; + } + + // Bold and italic fields are named to be alphabetically after Font. This is + // important! + + @EditableProperty(name = "Font Bold") + public boolean getBold() { + return font.isBold(); + } + + public void setBold(boolean bold) { + if (bold) { + if (font.isItalic()) { + font = font.deriveFont(Font.BOLD + Font.ITALIC); + } else { + font = font.deriveFont(Font.BOLD); + } + } else { + if (font.isItalic()) { + font = font.deriveFont(Font.ITALIC); + } else { + font = font.deriveFont(Font.PLAIN); + } + } + } + + @EditableProperty(name = "Font Italic") + public boolean getItalic() { + return font.isItalic(); + } + + public void setItalic(boolean italic) { + if (italic) { + if (font.isBold()) { + font = font.deriveFont(Font.BOLD + Font.ITALIC); + } else { + font = font.deriveFont(Font.ITALIC); + } + } else { + if (font.isBold()) { + font = font.deriveFont(Font.BOLD); + } else { + font = font.deriveFont(Font.PLAIN); + } + } + } + + @EditableProperty(name = "Font Size") + public int getFontSize() { + return font.getSize(); + } + + public void setFontSize(int size) { + // font = font.deriveFont((float) size); + } + @Override public int getControlPointCount() { return 1;