From 74a3486a847b95f6bd1578656548fe2cf2b03f01 Mon Sep 17 00:00:00 2001 From: Harald Wolff Date: Thu, 17 Nov 2016 20:04:18 +0100 Subject: [PATCH 1/2] Merge Upstream --- .../hwo/models/TableMapper/TableMapper.java | 9 ++- .../TableMapper/TableMapperListener.java | 2 +- src/org/hwo/ui/JInputDialog.java | 63 +++++++++++++++++-- 3 files changed, 66 insertions(+), 8 deletions(-) diff --git a/src/org/hwo/models/TableMapper/TableMapper.java b/src/org/hwo/models/TableMapper/TableMapper.java index c84423d..2c8d6fb 100644 --- a/src/org/hwo/models/TableMapper/TableMapper.java +++ b/src/org/hwo/models/TableMapper/TableMapper.java @@ -389,8 +389,6 @@ public class TableMapper extends AbstractTableModel } } }; - - table.addMouseListener(mouseAdapter); if (InteractiveObjectHelper.isInteractiveObject(editorObjectClass)) setEditorEnabled(true); @@ -484,6 +482,10 @@ public class TableMapper extends AbstractTableModel for (TableMapperListener listener: tableMapperListeners) listener.ValueChanged(row, column); } + protected void fireTableRowChanged(Object row){ + for (TableMapperListener listener: tableMapperListeners) + listener.tableRowChanged(this, row); + } private Object getEditorObject() { @@ -525,6 +527,8 @@ public class TableMapper extends AbstractTableModel System.err.println("TableMapper.openEditor()"); for (TableMapperListener listener: this.tableMapperListeners){ if (listener.editorRequest(this, getSelectedRow())){ + fireTableRowsUpdated(jTable.getSelectedRow(), jTable.getSelectedRow()); + fireTableRowChanged(getSelectedRow()); return; } } @@ -537,6 +541,7 @@ public class TableMapper extends AbstractTableModel if (ObjectEditorUIHelper.edit(editorObject)){ fireTableDataChanged(); + fireTableRowChanged(getSelectedRow()); } } diff --git a/src/org/hwo/models/TableMapper/TableMapperListener.java b/src/org/hwo/models/TableMapper/TableMapperListener.java index 1c133e6..f959ea3 100644 --- a/src/org/hwo/models/TableMapper/TableMapperListener.java +++ b/src/org/hwo/models/TableMapper/TableMapperListener.java @@ -3,7 +3,7 @@ package org.hwo.models.TableMapper; public interface TableMapperListener { public void ValueChanged(int row,int column); - + public void tableRowChanged(TableMapper sender,Object row); public boolean editorRequest(TableMapper tableMapper,Object row); } diff --git a/src/org/hwo/ui/JInputDialog.java b/src/org/hwo/ui/JInputDialog.java index 2fafb5c..cb96116 100644 --- a/src/org/hwo/ui/JInputDialog.java +++ b/src/org/hwo/ui/JInputDialog.java @@ -1,6 +1,7 @@ package org.hwo.ui; import java.awt.BorderLayout; +import java.awt.Component; import java.awt.FlowLayout; import javax.swing.JButton; @@ -26,7 +27,7 @@ public class JInputDialog extends JDialog { public static String show(String title,String message,String preload){ return show(null,title,message,preload); } - public static String show(JFrame parent,String title,String message,String preload){ + public static String show(Component parent,String title,String message,String preload){ JInputDialog jid = new JInputDialog(); if (parent != null){ @@ -43,10 +44,33 @@ public class JInputDialog extends JDialog { return null; } + public static T show(Component parent,EditorComponent editor,String title,String message,T preload){ + + JInputDialog jid = new JInputDialog(); + if (parent != null){ + jid.setLocationRelativeTo(parent); + } + jid.setTitle(title); + jid.lMessage.setText(message); + jid.setEditor(editor); + jid.setValue(preload); + + jid.setVisible(true); + if (jid.accepted) + return (T)jid.getValue(); + + return null; + } + private final JPanel contentPanel = new JPanel(); private JTextField tfInputText; private JLabel lMessage; + private EditorComponent + editorComponent; + private GridBagLayout gbl_contentPanel; + private GridBagConstraints gbc_tfInputText; + private boolean accepted; /** @@ -55,12 +79,14 @@ public class JInputDialog extends JDialog { public JInputDialog() { setModalityType(ModalityType.APPLICATION_MODAL); setModalExclusionType(ModalExclusionType.APPLICATION_EXCLUDE); + setVisible(false); + setDefaultCloseOperation(DISPOSE_ON_CLOSE); setModal(true); setBounds(100, 100, 661, 222); getContentPane().setLayout(new BorderLayout()); contentPanel.setBorder(new EmptyBorder(5, 5, 5, 5)); getContentPane().add(contentPanel, BorderLayout.CENTER); - GridBagLayout gbl_contentPanel = new GridBagLayout(); + gbl_contentPanel = new GridBagLayout(); gbl_contentPanel.columnWidths = new int[]{0, 0}; gbl_contentPanel.rowHeights = new int[]{0, 0, 0}; gbl_contentPanel.columnWeights = new double[]{1.0, Double.MIN_VALUE}; @@ -76,7 +102,7 @@ public class JInputDialog extends JDialog { } { tfInputText = new JTextField(); - GridBagConstraints gbc_tfInputText = new GridBagConstraints(); + gbc_tfInputText = new GridBagConstraints(); gbc_tfInputText.fill = GridBagConstraints.BOTH; gbc_tfInputText.gridx = 0; gbc_tfInputText.gridy = 1; @@ -109,14 +135,41 @@ public class JInputDialog extends JDialog { buttonPane.add(cancelButton); } } + + editorComponent = new EditorComponent() { + @Override + public void setEditorValue(Object value) { + tfInputText.setText(value.toString()); + } + @Override + public Object getEditorValue() { + return tfInputText.getText(); + } + @Override + public Component asComponent() { + return tfInputText; + } + }; } public String getInputText(){ - return tfInputText.getText(); + return editorComponent.getEditorValue().toString(); } public void setInputText(String inputText){ - tfInputText.setText(inputText); + editorComponent.setEditorValue(inputText); + } + public Object getValue(){ + return editorComponent.getEditorValue(); + } + public void setValue(Object value){ + editorComponent.setEditorValue(value); + } + + public void setEditor(EditorComponent editorComponent){ + contentPanel.remove(this.editorComponent.asComponent()); + this.editorComponent = editorComponent; + contentPanel.add(this.editorComponent.asComponent(),gbc_tfInputText); } private void accept(){ From c9d8f46f15e3c7c74a5b10929d4fdc340d128bf2 Mon Sep 17 00:00:00 2001 From: Harald Wolff Date: Fri, 2 Dec 2016 09:17:14 +0100 Subject: [PATCH 2/2] WIP161202 --- src/org/hwo/models/TableMapper/TableMapper.java | 2 +- src/org/hwo/ui/EditorComponent.java | 11 +++++++++++ src/org/hwo/ui/KeyStrokeHelper.java | 1 + src/org/hwo/ui/diagram/SimplePlotLabeler.java | 2 +- 4 files changed, 14 insertions(+), 2 deletions(-) create mode 100644 src/org/hwo/ui/EditorComponent.java diff --git a/src/org/hwo/models/TableMapper/TableMapper.java b/src/org/hwo/models/TableMapper/TableMapper.java index 2c8d6fb..ca4b50b 100644 --- a/src/org/hwo/models/TableMapper/TableMapper.java +++ b/src/org/hwo/models/TableMapper/TableMapper.java @@ -229,7 +229,7 @@ public class TableMapper extends AbstractTableModel { Object v = fetchValue(instance); - if (v.getClass().isArray() && (extractField != null)){ + if ((v!=null) && v.getClass().isArray() && (extractField != null)){ v = ((Object[])v)[extractField]; } diff --git a/src/org/hwo/ui/EditorComponent.java b/src/org/hwo/ui/EditorComponent.java new file mode 100644 index 0000000..617c207 --- /dev/null +++ b/src/org/hwo/ui/EditorComponent.java @@ -0,0 +1,11 @@ +package org.hwo.ui; + +import java.awt.Component; + +public interface EditorComponent { + + public Component asComponent(); + public void setEditorValue(Object value); + public Object getEditorValue(); + +} diff --git a/src/org/hwo/ui/KeyStrokeHelper.java b/src/org/hwo/ui/KeyStrokeHelper.java index dea4151..3770d36 100644 --- a/src/org/hwo/ui/KeyStrokeHelper.java +++ b/src/org/hwo/ui/KeyStrokeHelper.java @@ -55,6 +55,7 @@ public class KeyStrokeHelper { else focused = JComponent.WHEN_FOCUSED; component.registerKeyboardAction(new KeyStrokeActionListener(keyCode), KeyStroke.getKeyStroke(keyCode, 0), focused); + return this; } diff --git a/src/org/hwo/ui/diagram/SimplePlotLabeler.java b/src/org/hwo/ui/diagram/SimplePlotLabeler.java index cb20e93..e759c79 100644 --- a/src/org/hwo/ui/diagram/SimplePlotLabeler.java +++ b/src/org/hwo/ui/diagram/SimplePlotLabeler.java @@ -43,7 +43,7 @@ public class SimplePlotLabeler implements PlotLabeler { ); } else if (digits == 0){ return String.format("%1.2f",value); - } else if (digits > 0){ + } else { return String.format( String.format("%%%d.2f",digits), value