From f0ef6ddd39c89010b5e57e08354bcc2d8f6bbbab Mon Sep 17 00:00:00 2001 From: Harald Wolff Date: Thu, 17 Nov 2016 16:35:01 +0100 Subject: [PATCH] WIP161117 --- .../hwo/models/TableMapper/TableColumn.java | 2 + .../hwo/models/TableMapper/TableMapper.java | 153 +++++++++++++++--- .../TableMapper/TableMapperColumnModel.java | 2 +- src/org/hwo/ui/JObjectSelector.java | 40 +++-- src/org/hwo/ui/diagram/LinePlotPainter.java | 11 +- src/org/hwo/ui/diagram/SimplePlotLabeler.java | 2 + src/org/hwo/ui/dialog/SerialPortChooser.java | 10 +- 7 files changed, 182 insertions(+), 38 deletions(-) diff --git a/src/org/hwo/models/TableMapper/TableColumn.java b/src/org/hwo/models/TableMapper/TableColumn.java index b5edbda..d7a8886 100644 --- a/src/org/hwo/models/TableMapper/TableColumn.java +++ b/src/org/hwo/models/TableMapper/TableColumn.java @@ -13,6 +13,8 @@ public @interface TableColumn { String after() default ""; boolean firstColumn() default false; int order() default 0; + String format() default ""; + int fieldlength() default 0; } diff --git a/src/org/hwo/models/TableMapper/TableMapper.java b/src/org/hwo/models/TableMapper/TableMapper.java index 3cf015e..b932064 100644 --- a/src/org/hwo/models/TableMapper/TableMapper.java +++ b/src/org/hwo/models/TableMapper/TableMapper.java @@ -1,5 +1,6 @@ package org.hwo.models.TableMapper; +import java.awt.Dimension; import java.awt.MouseInfo; import java.awt.Point; import java.awt.Window; @@ -58,6 +59,8 @@ public class TableMapper extends AbstractTableModel private ColumnInfo nextColumn; private int order; + private Integer + extractField; protected ColumnInfo(TableColumn tc,Field field) { @@ -170,7 +173,14 @@ public class TableMapper extends AbstractTableModel public int getOrder() { return order; } + public void setOrder(int order) { + this.order = order; + } + public String getColumnLabel(){ + return String.format(this.p_label, extractField); + } + public String getLabel() { return this.p_label; @@ -198,27 +208,59 @@ public class TableMapper extends AbstractTableModel return this.p_columnclass; } - public Object getValue(Object instance) throws IllegalAccessException, IllegalArgumentException, InvocationTargetException + private Object fetchValue(Object instance) throws IllegalAccessException, IllegalArgumentException, InvocationTargetException { + Object v = null; if (p_field != null) - return p_field.get(instance); + v = p_field.get(instance); if (p_method != null) - return p_method.invoke(instance, null); - return null; + v = p_method.invoke(instance); + return v; } - public void setValue(Object instance,Object value) throws IllegalAccessException + public Object getValue(Object instance) throws IllegalAccessException, IllegalArgumentException, InvocationTargetException { - if (p_field != null) - p_field.set(instance, value); + Object v = fetchValue(instance); - if (p_method_w != null){ - try { - p_method_w.invoke(instance, value); - } catch (IllegalArgumentException e) { - e.printStackTrace(); - } catch (InvocationTargetException e) { - e.printStackTrace(); + if (v.getClass().isArray() && (extractField != null)){ + v = ((Object[])v)[extractField]; + } + + if (!p_annotation.format().equals("")){ + v = String.format(p_annotation.format(), v); + } + return v; + } + + public void setValue(Object instance,Object value) throws IllegalAccessException,InvocationTargetException + { + if (extractField != null){ + Object v = fetchValue(instance); + ((Object[])v)[extractField] = value; + + if (p_method_w != null){ + try { + p_method_w.invoke(instance, v); + } catch (IllegalArgumentException e) { + e.printStackTrace(); + } catch (InvocationTargetException e) { + e.printStackTrace(); + } + } + + } else { + + if (p_field != null) + p_field.set(instance, value); + + if (p_method_w != null){ + try { + p_method_w.invoke(instance, value); + } catch (IllegalArgumentException e) { + e.printStackTrace(); + } catch (InvocationTargetException e) { + e.printStackTrace(); + } } } } @@ -247,6 +289,13 @@ public class TableMapper extends AbstractTableModel this.tableColumn = tableColumn; } + public Integer getExtractField() { + return extractField; + } + public void setExtractField(Integer extractField) { + this.extractField = extractField; + } + } @@ -373,7 +422,16 @@ public class TableMapper extends AbstractTableModel } else { this.jTable.setRowSorter(null); - } + } + + int minwidth = 0; + for (ColumnInfo ci: p_columns){ + minwidth += ci.getWidth(); + } + + //jTable.setMinSize(new Dimension(minwidth, 24)); + jTable.setAutoResizeMode(JTable.AUTO_RESIZE_OFF); + } public boolean isSortingEnabled() { @@ -443,7 +501,7 @@ public class TableMapper extends AbstractTableModel } } - private void openEditor() + public void openEditor() { System.err.println("TableMapper.openEditor()"); for (TableMapperListener listener: this.tableMapperListeners){ @@ -495,7 +553,8 @@ public class TableMapper extends AbstractTableModel public void setRows(Object[] rows) { - this.p_rows = Arrays.asList(rows); + this.p_rows = new ArrayList<>(); + this.p_rows.addAll(Arrays.asList(rows)); fireTableDataChanged(); } @@ -560,8 +619,19 @@ public class TableMapper extends AbstractTableModel { if (field.getAnnotation(TableColumn.class)!=null) { - ColumnInfo ci = new ColumnInfo(field.getAnnotation(TableColumn.class),field); - addColumnInfo(ci); + int fl = field.getAnnotation(TableColumn.class).fieldlength(); + if (fl > 0){ + for (int i=0;i 0){ + for (int i=0;i extends JDialog { - public static Object execute(Object[] items){ - - JObjectSelector os = new JObjectSelector(); + public static T execute(T[] items){ + return execute(items,null,null); + } + public static T execute(T[] items,Component parent){ + return execute(items,parent,null,null); + } + + public static T execute(T[] items,String title,String text){ + return execute(items,null,title,text); + } + public static T execute(T[] items,Component parent,String title,String text){ + JObjectSelector os = new JObjectSelector(); os.setItems(items); + if (title != null) + os.setTitle(title); + if (text != null) + os.setText(text); + + if (parent != null){ + os.setLocationRelativeTo(parent); + } + os.setVisible(true); os.dispose(); return os.selectedItem; @@ -38,8 +58,8 @@ public class JObjectSelector extends JDialog { private final JPanel contentPanel = new JPanel(); private JList lItems; - private Object[] items; - private Object selectedItem; + private E[] items; + private E selectedItem; private JLabel lText; /** @@ -105,7 +125,7 @@ public class JObjectSelector extends JDialog { public void accept() { - selectedItem = lItems.getSelectedValue(); + selectedItem = (E)lItems.getSelectedValue(); setVisible(false); } @@ -113,15 +133,15 @@ public class JObjectSelector extends JDialog { setVisible(false); } - public void setItems(Object[] items) { + public void setItems(E[] items) { this.items = items; DefaultListModel dlm = new DefaultListModel(); - for (Object o:items){ + for (E o:items){ dlm.addElement(o); } lItems.setModel(dlm); } - public Object[] getItems() { + public E[] getItems() { return items; } diff --git a/src/org/hwo/ui/diagram/LinePlotPainter.java b/src/org/hwo/ui/diagram/LinePlotPainter.java index 31ec3ce..b248584 100644 --- a/src/org/hwo/ui/diagram/LinePlotPainter.java +++ b/src/org/hwo/ui/diagram/LinePlotPainter.java @@ -12,6 +12,8 @@ public class LinePlotPainter implements PlotPainter { Stroke stroke; + Color color; + public LinePlotPainter() { setWidth(1.0f); } @@ -25,7 +27,7 @@ public class LinePlotPainter implements PlotPainter { @Override public void paintPoint(Graphics2D g, Color color, int x, int y) { if (lx != -1){ - g.setColor(color); + g.setColor(this.color != null ? this.color : color); Stroke s = g.getStroke(); g.setStroke(stroke); g.drawLine(lx, ly, x, y); @@ -44,4 +46,11 @@ public class LinePlotPainter implements PlotPainter { return width; } + public Color getColor() { + return color; + } + public void setColor(Color color) { + this.color = color; + } + } diff --git a/src/org/hwo/ui/diagram/SimplePlotLabeler.java b/src/org/hwo/ui/diagram/SimplePlotLabeler.java index 4d0ab81..a2280ab 100644 --- a/src/org/hwo/ui/diagram/SimplePlotLabeler.java +++ b/src/org/hwo/ui/diagram/SimplePlotLabeler.java @@ -41,6 +41,8 @@ public class SimplePlotLabeler implements PlotLabeler { String.format("%%.%df",-digits), value ); + } else if (digits == 0){ + return String.format("%1.2f",value); } else { return String.format( String.format("%%%d.2f",-digits), diff --git a/src/org/hwo/ui/dialog/SerialPortChooser.java b/src/org/hwo/ui/dialog/SerialPortChooser.java index 24e4b2a..c5f5041 100644 --- a/src/org/hwo/ui/dialog/SerialPortChooser.java +++ b/src/org/hwo/ui/dialog/SerialPortChooser.java @@ -1,6 +1,7 @@ package org.hwo.ui.dialog; import java.awt.BorderLayout; +import java.awt.Component; import java.awt.FlowLayout; import javax.swing.JButton; @@ -32,10 +33,13 @@ public class SerialPortChooser extends JDialog { { return execute(null); } - public static NewSerialPort execute(String selectedPortName) + public static NewSerialPort execute(Component parent,String selectedPortName) { SerialPortChooser spc = new SerialPortChooser(); + if (parent != null) + spc.setLocationRelativeTo(parent); + if (selectedPortName != null) spc.setSelectedSerialPort(selectedPortName); @@ -43,6 +47,10 @@ public class SerialPortChooser extends JDialog { return spc.getSelectedSerialPort(); } + public static NewSerialPort execute(String selectedPortName) + { + return execute(null,selectedPortName); + } private final JPanel contentPanel = new JPanel();