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;