A number of fixes to the PropertySheetPanel
This commit is contained in:
parent
850664c313
commit
d01cfb4803
@ -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"))) {
|
||||||
|
@ -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);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
@ -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());
|
||||||
|
Loading…
x
Reference in New Issue
Block a user