A number of fixes to the PropertySheetPanel

This commit is contained in:
Fabian Becker 2015-12-13 16:51:14 +01:00
parent 850664c313
commit d01cfb4803
3 changed files with 22 additions and 26 deletions

View File

@ -249,7 +249,7 @@ public class MainFrame extends JFrame implements OptimizationStateListener {
if (System.getProperty("os.name").equals("Linux")) { if (System.getProperty("os.name").equals("Linux")) {
return; return;
} }
// Properties for Mac OS X support. // Properties for Mac OS X support.
if ((System.getProperty("mrj.version") != null) if ((System.getProperty("mrj.version") != null)
|| (System.getProperty("os.name").toLowerCase().contains("mac"))) { || (System.getProperty("os.name").toLowerCase().contains("mac"))) {

View File

@ -3,7 +3,6 @@ package eva2.gui;
import javax.swing.*; import javax.swing.*;
import java.awt.*; import java.awt.*;
import java.awt.event.ItemEvent; import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import java.beans.PropertyEditor; import java.beans.PropertyEditor;
/** /**
@ -23,15 +22,12 @@ public class PropertyBoolSelector extends JCheckBox {
setSelected(false); setSelected(false);
} }
addItemListener(new ItemListener() { addItemListener(evt -> {
@Override if (evt.getStateChange() == ItemEvent.SELECTED) {
public void itemStateChanged(ItemEvent evt) { propertyEditor.setValue(Boolean.TRUE);
if (evt.getStateChange() == ItemEvent.SELECTED) { }
propertyEditor.setValue(Boolean.TRUE); if (evt.getStateChange() == ItemEvent.DESELECTED) {
} propertyEditor.setValue(Boolean.FALSE);
if (evt.getStateChange() == ItemEvent.DESELECTED) {
propertyEditor.setValue(Boolean.FALSE);
}
} }
}); });
} }

View File

@ -7,10 +7,7 @@ import eva2.util.annotation.Hidden;
import eva2.util.annotation.Parameter; import eva2.util.annotation.Parameter;
import javax.swing.*; import javax.swing.*;
import javax.swing.table.DefaultTableModel; import javax.swing.table.*;
import javax.swing.table.TableCellEditor;
import javax.swing.table.TableCellRenderer;
import javax.swing.table.TableModel;
import java.awt.*; import java.awt.*;
import java.awt.event.ActionEvent; import java.awt.event.ActionEvent;
import java.awt.event.ActionListener; import java.awt.event.ActionListener;
@ -128,7 +125,7 @@ public final class PropertySheetPanel extends JPanel implements PropertyChangeLi
* @return * @return
*/ */
public static JComponent getView(PropertyEditor editor) { public static JComponent getView(PropertyEditor editor) {
JComponent view = null; JComponent view;
// Now figure out how to display it... // Now figure out how to display it...
if (editor.isPaintable() && editor.supportsCustomEditor()) { if (editor.isPaintable() && editor.supportsCustomEditor()) {
view = new PropertyPanel(editor); view = new PropertyPanel(editor);
@ -197,6 +194,7 @@ public final class PropertySheetPanel extends JPanel implements PropertyChangeLi
propertyTable.setDefaultEditor(Object.class, new PropertyCellEditor()); propertyTable.setDefaultEditor(Object.class, new PropertyCellEditor());
propertyTable.setRowHeight(22); propertyTable.setRowHeight(22);
propertyTable.setDragEnabled(false); propertyTable.setDragEnabled(false);
propertyTable.setGridColor(Color.LIGHT_GRAY);
propertyTable.putClientProperty("terminateEditOnFocusLost", Boolean.TRUE); propertyTable.putClientProperty("terminateEditOnFocusLost", Boolean.TRUE);
// Close any child windows at this point // Close any child windows at this point
@ -823,7 +821,7 @@ public final class PropertySheetPanel extends JPanel implements PropertyChangeLi
Object o; Object o;
Method getter = null; Method getter = null;
if (propertyEditors[i] == null) { if (propertyEditors[i] == null) {
continue; /// TODO: MK: Im not quite sure this is all good, but it avoids a latency problem continue; /// TODO: MK: Im not quite sure this is all good, but it avoids a latency problem
} }
try { try {
getter = propertyDescriptors[i].getReadMethod(); getter = propertyDescriptors[i].getReadMethod();
@ -978,18 +976,18 @@ public final class PropertySheetPanel extends JPanel implements PropertyChangeLi
} }
} }
final class PropertyCellRenderer implements TableCellRenderer { final class PropertyCellRenderer extends DefaultTableCellRenderer {
private Logger LOGGER = Logger.getLogger(PropertyCellRenderer.class.getName()); private Logger LOGGER = Logger.getLogger(PropertyCellRenderer.class.getName());
JLabel empty = new JLabel();
@Override @Override
public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) { public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
if (value == null) { if (value == null) {
return empty; return this;
} else if (value instanceof String) { } else if (value instanceof String) {
// Really hacky but it adds a prefix so the alignment looks ok // Really hacky but it adds a prefix so the alignment looks ok
return new JLabel(" " + value.toString()); setText((String) value);
return this;
} else if (value instanceof eva2.gui.PropertyPanel) { } else if (value instanceof eva2.gui.PropertyPanel) {
JComponent component = new JPanel(); JComponent component = new JPanel();
component.setLayout(new BorderLayout()); component.setLayout(new BorderLayout());
@ -1010,11 +1008,14 @@ final class PropertyCellRenderer implements TableCellRenderer {
component.add(dialogButton, BorderLayout.LINE_END); component.add(dialogButton, BorderLayout.LINE_END);
return component; return component;
} else if (value instanceof PropertyText) { } else if (value instanceof PropertyText) {
return (PropertyText) value; setText(((PropertyText)value).getText());
return this;
} else if (value instanceof PropertyBoolSelector) { } else if (value instanceof PropertyBoolSelector) {
return (PropertyBoolSelector) value; return (PropertyBoolSelector) value;
} else if (value instanceof PropertyValueSelector) { } else if (value instanceof PropertyValueSelector) {
return (PropertyValueSelector) value; PropertyValueSelector elector = (PropertyValueSelector) value;
setText(elector.getSelectedItem().toString());
return this;
} }
LOGGER.log(Level.FINEST, "Cell Component: " + value.getClass()); LOGGER.log(Level.FINEST, "Cell Component: " + value.getClass());
@ -1029,15 +1030,14 @@ final class PropertyCellEditor extends AbstractCellEditor implements TableCellEd
private Object value; private Object value;
@Override @Override
public JComponent getTableCellEditorComponent(JTable table, final Object value, boolean isSelected, int row, int column) { public Component getTableCellEditorComponent(JTable table, final Object value, boolean isSelected, int row, int column) {
LOGGER.log(Level.FINEST, "Editor Component: " + value.getClass()); LOGGER.log(Level.FINEST, "Editor Component: " + value.getClass());
this.value = value; this.value = value;
JComponent component; JComponent component;
if (value == null) { if (value == null) {
component = empty; component = empty;
} else if (value instanceof String) { } else if (value instanceof String) {
// Really hacky but it adds a prefix so the alignment looks ok component = new JLabel(value.toString());
component = new JLabel(" " + value.toString());
} else if (value instanceof PropertyPanel) { } else if (value instanceof PropertyPanel) {
component = new JPanel(); component = new JPanel();
component.setLayout(new BorderLayout()); component.setLayout(new BorderLayout());