WIP161117
parent
82124f8e9e
commit
f0ef6ddd39
|
@ -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;
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -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<fl;i++){
|
||||
ColumnInfo ci = new ColumnInfo(field.getAnnotation(TableColumn.class),field);
|
||||
ci.setExtractField(i);
|
||||
ci.setOrder(ci.getOrder() + i);
|
||||
addColumnInfo(ci);
|
||||
}
|
||||
|
||||
} else {
|
||||
ColumnInfo ci = new ColumnInfo(field.getAnnotation(TableColumn.class),field);
|
||||
addColumnInfo(ci);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -569,8 +639,19 @@ public class TableMapper extends AbstractTableModel
|
|||
{
|
||||
if (method.getAnnotation(TableColumn.class)!=null)
|
||||
{
|
||||
ColumnInfo ci = new ColumnInfo(method.getAnnotation(TableColumn.class),method);
|
||||
addColumnInfo(ci);
|
||||
int fl = method.getAnnotation(TableColumn.class).fieldlength();
|
||||
if (fl > 0){
|
||||
for (int i=0;i<fl;i++){
|
||||
ColumnInfo ci = new ColumnInfo(method.getAnnotation(TableColumn.class),method);
|
||||
ci.setExtractField(i);
|
||||
ci.setOrder(ci.getOrder() + i);
|
||||
addColumnInfo(ci);
|
||||
}
|
||||
|
||||
} else {
|
||||
ColumnInfo ci = new ColumnInfo(method.getAnnotation(TableColumn.class),method);
|
||||
addColumnInfo(ci);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -641,11 +722,30 @@ public class TableMapper extends AbstractTableModel
|
|||
return this.p_readonly;
|
||||
}
|
||||
|
||||
public void addRow(Object row,Object before){
|
||||
if (before != null){
|
||||
int ind = this.p_rows.indexOf(before);
|
||||
this.p_rows.add(ind, row);
|
||||
fireTableRowsInserted(ind, ind);
|
||||
} else {
|
||||
this.p_rows.add(row);
|
||||
fireTableRowsInserted(this.p_rows.indexOf(row),this.p_rows.indexOf(row));
|
||||
};
|
||||
}
|
||||
|
||||
public void addRows(Object[] rows,Object before){
|
||||
int ind = (before != null) ? this.p_rows.indexOf(before) : p_rows.size();
|
||||
int n = ind;
|
||||
|
||||
for (Object row: rows){
|
||||
this.p_rows.add(n++, row);
|
||||
}
|
||||
fireTableDataChanged();
|
||||
}
|
||||
|
||||
public void addRow(Object row)
|
||||
{
|
||||
this.p_rows.add(row);
|
||||
//fireTableRowsInserted(getRowCount()-1, getRowCount()-1);
|
||||
fireTableDataChanged();
|
||||
addRow(row,null);
|
||||
}
|
||||
public void removeRow(Object row)
|
||||
{
|
||||
|
@ -720,6 +820,10 @@ public class TableMapper extends AbstractTableModel
|
|||
this.p_columns.get(columnIndex).setValue(this.p_rows.get(rowIndex), aValue);
|
||||
fireValueChanged(rowIndex, columnIndex);
|
||||
} catch (IllegalAccessException ex)
|
||||
{
|
||||
System.err.println("IllegalAccessException: " + ex);
|
||||
ex.printStackTrace();
|
||||
} catch (InvocationTargetException ex)
|
||||
{
|
||||
System.err.println("IllegalAccessException: " + ex);
|
||||
ex.printStackTrace();
|
||||
|
@ -783,7 +887,6 @@ public class TableMapper extends AbstractTableModel
|
|||
return result;
|
||||
}
|
||||
|
||||
|
||||
public boolean exportToFile(File exportFile)
|
||||
{
|
||||
CSV csv = new CSV();
|
||||
|
|
|
@ -40,7 +40,7 @@ class TableMapperColumnModel implements TableColumnModel{
|
|||
TableColumn tc = new TableColumn(i, ci.getWidth());
|
||||
tc.setPreferredWidth(ci.getWidth());
|
||||
tc.setMinWidth(ci.getWidth());
|
||||
tc.setHeaderValue(ci.getLabel());
|
||||
tc.setHeaderValue(ci.getColumnLabel());
|
||||
tc.addPropertyChangeListener(new PropertyChangeListener() {
|
||||
|
||||
@Override
|
||||
|
|
|
@ -1,10 +1,12 @@
|
|||
package org.hwo.ui;
|
||||
|
||||
import java.awt.BorderLayout;
|
||||
import java.awt.Component;
|
||||
import java.awt.FlowLayout;
|
||||
|
||||
import javax.swing.DefaultListModel;
|
||||
import javax.swing.JButton;
|
||||
import javax.swing.JComponent;
|
||||
import javax.swing.JDialog;
|
||||
import javax.swing.JPanel;
|
||||
import javax.swing.border.EmptyBorder;
|
||||
|
@ -23,12 +25,30 @@ import java.awt.event.ActionEvent;
|
|||
import java.awt.Dialog.ModalExclusionType;
|
||||
import java.awt.Dialog.ModalityType;
|
||||
|
||||
public class JObjectSelector extends JDialog {
|
||||
public class JObjectSelector<E> extends JDialog {
|
||||
|
||||
public static Object execute(Object[] items){
|
||||
|
||||
JObjectSelector os = new JObjectSelector();
|
||||
public static <T> T execute(T[] items){
|
||||
return execute(items,null,null);
|
||||
}
|
||||
public static <T> T execute(T[] items,Component parent){
|
||||
return execute(items,parent,null,null);
|
||||
}
|
||||
|
||||
public static <T extends Object> T execute(T[] items,String title,String text){
|
||||
return execute(items,null,title,text);
|
||||
}
|
||||
public static <T extends Object> T execute(T[] items,Component parent,String title,String text){
|
||||
JObjectSelector<T> os = new JObjectSelector<T>();
|
||||
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;
|
||||
}
|
||||
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -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),
|
||||
|
|
|
@ -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();
|
||||
|
|
Loading…
Reference in New Issue