label has editable font

This commit is contained in:
bancika
2011-02-27 21:56:08 +00:00
parent e2da0b884d
commit 401f2b5e6f
7 changed files with 120 additions and 36 deletions
@@ -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");
}
@@ -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);
}
}
@@ -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());
}
});
}
}
@@ -302,6 +302,10 @@
<changeType>NEW_FEATURE</changeType>
<description>Vertical vero board</description>
</com.diyfever.gui.update.Change>
<com.diyfever.gui.update.Change>
<changeType>NEW_FEATURE</changeType>
<description>Label has editable font</description>
</com.diyfever.gui.update.Change>
</changes>
<url>http://code.google.com/p/diy-layout-creator/downloads/list</url>
</com.diyfever.gui.update.Version>