Merge branch 'master' of schwann.lupus:/git/java/org.hwo.ui.git

Conflicts:
	src/org/hwo/models/TableMapper/TableMapper.java
thobaben_diagram
Harald Wolff 2016-11-25 08:32:07 +01:00
commit 49d6fcf6b3
7 changed files with 184 additions and 38 deletions

View File

@ -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;
}

View File

@ -1,5 +1,6 @@
package org.hwo.models.TableMapper;
import java.awt.Dimension;
import java.awt.Component;
import java.awt.EventQueue;
import java.awt.MouseInfo;
@ -65,6 +66,8 @@ public class TableMapper extends AbstractTableModel
private ColumnInfo nextColumn;
private int order;
private Integer
extractField;
protected ColumnInfo(TableColumn tc,Field field)
{
@ -177,7 +180,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;
@ -205,27 +215,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();
}
}
}
}
@ -254,6 +296,13 @@ public class TableMapper extends AbstractTableModel
this.tableColumn = tableColumn;
}
public Integer getExtractField() {
return extractField;
}
public void setExtractField(Integer extractField) {
this.extractField = extractField;
}
}
@ -322,8 +371,8 @@ public class TableMapper extends AbstractTableModel
table.setModel(this);
table.setColumnModel(new TableMapperColumnModel(this));
table.setAutoCreateRowSorter(false);
setSortingEnabled(true);
table.setAutoCreateRowSorter(true);
table.setDefaultRenderer(Object.class, new TableCellRenderer());
mouseAdapter = new MouseAdapter() {
@ -385,7 +434,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() {
@ -462,7 +520,7 @@ public class TableMapper extends AbstractTableModel
}
}
private void openEditor()
public void openEditor()
{
System.err.println("TableMapper.openEditor()");
for (TableMapperListener listener: this.tableMapperListeners){
@ -514,7 +572,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();
}
@ -579,8 +638,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);
}
}
}
@ -588,8 +658,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);
}
}
}
@ -660,8 +741,31 @@ 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)
{
addRow(row,null);
/*
this.p_rows.add(row);
//fireTableRowsInserted(getRowCount()-1, getRowCount()-1);
fireTableDataChanged();
@ -670,6 +774,7 @@ public class TableMapper extends AbstractTableModel
TableMapperValue tmv = (TableMapperValue)row;
tmv.assignTableMapper(this);
}
*/
}
public void removeRow(Object row)
{
@ -748,6 +853,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();
@ -811,7 +920,6 @@ public class TableMapper extends AbstractTableModel
return result;
}
public boolean exportToFile(File exportFile)
{
CSV csv = new CSV();

View File

@ -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

View File

@ -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;
}

View File

@ -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;
}
}

View File

@ -41,13 +41,13 @@ public class SimplePlotLabeler implements PlotLabeler {
String.format("%%.%df",-digits),
value
);
} else if (digits == 0){
return String.format("%1.2f",value);
} else if (digits > 0){
return String.format(
String.format("%%%d.2f",digits),
value
);
} else {
return String.format("%4f",value);
}
}

View File

@ -33,7 +33,7 @@ public class SerialPortChooser extends JDialog {
{
return execute(null);
}
public static NewSerialPort execute(String selectedPortName)
public static NewSerialPort execute(Component parent,String selectedPortName)
{
return execute(null, selectedPortName);
}
@ -41,6 +41,9 @@ public class SerialPortChooser extends JDialog {
{
SerialPortChooser spc = new SerialPortChooser();
if (parent != null)
spc.setLocationRelativeTo(parent);
if (selectedPortName != null)
spc.setSelectedSerialPort(selectedPortName);
@ -51,6 +54,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();