forked from LupusNobilis/java-org.hwo.ui
Neu: JObjectSelect, JTimeSpanEditor
parent
e1d027e285
commit
f6cc9b3403
|
@ -0,0 +1,102 @@
|
||||||
|
package org.hwo.ui;
|
||||||
|
|
||||||
|
import javax.swing.JComponent;
|
||||||
|
|
||||||
|
import java.awt.GridBagLayout;
|
||||||
|
|
||||||
|
import javax.swing.JTextField;
|
||||||
|
|
||||||
|
import java.awt.GridBagConstraints;
|
||||||
|
import java.awt.Insets;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.Arrays;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import javax.swing.JButton;
|
||||||
|
import javax.swing.ImageIcon;
|
||||||
|
import javax.swing.JList;
|
||||||
|
import javax.swing.JPopupMenu;
|
||||||
|
|
||||||
|
import java.awt.event.ActionListener;
|
||||||
|
import java.awt.event.ActionEvent;
|
||||||
|
|
||||||
|
public class JObjectSelect extends JComponent {
|
||||||
|
private JTextField tfDisplay;
|
||||||
|
|
||||||
|
private List<Object> itemList;
|
||||||
|
private Object selectedItem;
|
||||||
|
|
||||||
|
public JObjectSelect() {
|
||||||
|
GridBagLayout gridBagLayout = new GridBagLayout();
|
||||||
|
gridBagLayout.columnWidths = new int[]{0, 0, 0};
|
||||||
|
gridBagLayout.rowHeights = new int[]{0, 0};
|
||||||
|
gridBagLayout.columnWeights = new double[]{1.0, 0.0, Double.MIN_VALUE};
|
||||||
|
gridBagLayout.rowWeights = new double[]{1.0, Double.MIN_VALUE};
|
||||||
|
setLayout(gridBagLayout);
|
||||||
|
|
||||||
|
tfDisplay = new JTextField();
|
||||||
|
tfDisplay.setEditable(false);
|
||||||
|
GridBagConstraints gbc_tfDisplay = new GridBagConstraints();
|
||||||
|
gbc_tfDisplay.insets = new Insets(0, 0, 0, 5);
|
||||||
|
gbc_tfDisplay.fill = GridBagConstraints.BOTH;
|
||||||
|
gbc_tfDisplay.gridx = 0;
|
||||||
|
gbc_tfDisplay.gridy = 0;
|
||||||
|
add(tfDisplay, gbc_tfDisplay);
|
||||||
|
tfDisplay.setColumns(10);
|
||||||
|
|
||||||
|
JButton btnNewButton = new JButton("...");
|
||||||
|
btnNewButton.addActionListener(new ActionListener() {
|
||||||
|
public void actionPerformed(ActionEvent e) {
|
||||||
|
showListPopup();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
btnNewButton.setIcon(null);
|
||||||
|
GridBagConstraints gbc_btnNewButton = new GridBagConstraints();
|
||||||
|
gbc_btnNewButton.fill = GridBagConstraints.BOTH;
|
||||||
|
gbc_btnNewButton.gridx = 1;
|
||||||
|
gbc_btnNewButton.gridy = 0;
|
||||||
|
add(btnNewButton, gbc_btnNewButton);
|
||||||
|
|
||||||
|
itemList = new ArrayList<Object>();
|
||||||
|
setSelectedItem(null);
|
||||||
|
}
|
||||||
|
|
||||||
|
public Object getSelectedItem(){
|
||||||
|
return this.selectedItem;
|
||||||
|
}
|
||||||
|
public void setSelectedItem(Object item){
|
||||||
|
this.selectedItem = item;
|
||||||
|
|
||||||
|
if (selectedItem != null){
|
||||||
|
tfDisplay.setText(selectedItem.toString());
|
||||||
|
} else {
|
||||||
|
tfDisplay.setText("");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public Object[] getItems(){
|
||||||
|
return itemList.toArray();
|
||||||
|
}
|
||||||
|
public void setItems(Object[] items){
|
||||||
|
this.itemList.clear();
|
||||||
|
this.itemList.addAll(Arrays.asList(items));
|
||||||
|
}
|
||||||
|
|
||||||
|
private void showListPopup(){
|
||||||
|
|
||||||
|
/* JPopupMenu popup = new JPopupMenu();
|
||||||
|
JList<Object> jlist = new JList<Object>(itemList.toArray());
|
||||||
|
|
||||||
|
popup.add(jlist);
|
||||||
|
popup.show(this, 0, getHeight());
|
||||||
|
*/
|
||||||
|
|
||||||
|
Object si = JObjectSelector.execute(getItems());
|
||||||
|
if (si != null){
|
||||||
|
setSelectedItem(si);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,124 @@
|
||||||
|
package org.hwo.ui;
|
||||||
|
|
||||||
|
import javax.swing.JComponent;
|
||||||
|
import java.awt.GridBagLayout;
|
||||||
|
import javax.swing.JSpinner;
|
||||||
|
import java.awt.GridBagConstraints;
|
||||||
|
import java.awt.Insets;
|
||||||
|
import javax.swing.JLabel;
|
||||||
|
|
||||||
|
public class JTimeSpanEditor extends JComponent {
|
||||||
|
private JSpinner spDays;
|
||||||
|
private JSpinner spHours;
|
||||||
|
private JSpinner spMinutes;
|
||||||
|
private JSpinner spSeconds;
|
||||||
|
private JLabel lblD;
|
||||||
|
private JLabel lblNewLabel;
|
||||||
|
private JLabel label;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
public JTimeSpanEditor() {
|
||||||
|
GridBagLayout gridBagLayout = new GridBagLayout();
|
||||||
|
gridBagLayout.columnWidths = new int[] {0, 0, 0, 0, 0, 0, 0};
|
||||||
|
gridBagLayout.rowHeights = new int[]{0, 0};
|
||||||
|
gridBagLayout.columnWeights = new double[]{1.0, 0.0, 1.0, 0.0, 1.0, 0.0, 1.0};
|
||||||
|
gridBagLayout.rowWeights = new double[]{1.0, Double.MIN_VALUE};
|
||||||
|
setLayout(gridBagLayout);
|
||||||
|
|
||||||
|
spDays = new JSpinner();
|
||||||
|
GridBagConstraints gbc_spDays = new GridBagConstraints();
|
||||||
|
gbc_spDays.fill = GridBagConstraints.BOTH;
|
||||||
|
gbc_spDays.insets = new Insets(0, 0, 0, 5);
|
||||||
|
gbc_spDays.gridx = 0;
|
||||||
|
gbc_spDays.gridy = 0;
|
||||||
|
add(spDays, gbc_spDays);
|
||||||
|
|
||||||
|
lblD = new JLabel("d");
|
||||||
|
GridBagConstraints gbc_lblD = new GridBagConstraints();
|
||||||
|
gbc_lblD.insets = new Insets(0, 0, 0, 5);
|
||||||
|
gbc_lblD.gridx = 1;
|
||||||
|
gbc_lblD.gridy = 0;
|
||||||
|
add(lblD, gbc_lblD);
|
||||||
|
|
||||||
|
spHours = new JSpinner();
|
||||||
|
GridBagConstraints gbc_spHours = new GridBagConstraints();
|
||||||
|
gbc_spHours.fill = GridBagConstraints.BOTH;
|
||||||
|
gbc_spHours.insets = new Insets(0, 0, 0, 5);
|
||||||
|
gbc_spHours.gridx = 2;
|
||||||
|
gbc_spHours.gridy = 0;
|
||||||
|
add(spHours, gbc_spHours);
|
||||||
|
|
||||||
|
lblNewLabel = new JLabel(":");
|
||||||
|
GridBagConstraints gbc_lblNewLabel = new GridBagConstraints();
|
||||||
|
gbc_lblNewLabel.insets = new Insets(0, 0, 0, 5);
|
||||||
|
gbc_lblNewLabel.gridx = 3;
|
||||||
|
gbc_lblNewLabel.gridy = 0;
|
||||||
|
add(lblNewLabel, gbc_lblNewLabel);
|
||||||
|
|
||||||
|
spMinutes = new JSpinner();
|
||||||
|
GridBagConstraints gbc_spMinutes = new GridBagConstraints();
|
||||||
|
gbc_spMinutes.fill = GridBagConstraints.BOTH;
|
||||||
|
gbc_spMinutes.insets = new Insets(0, 0, 0, 5);
|
||||||
|
gbc_spMinutes.gridx = 4;
|
||||||
|
gbc_spMinutes.gridy = 0;
|
||||||
|
add(spMinutes, gbc_spMinutes);
|
||||||
|
|
||||||
|
label = new JLabel(":");
|
||||||
|
GridBagConstraints gbc_label = new GridBagConstraints();
|
||||||
|
gbc_label.insets = new Insets(0, 0, 0, 5);
|
||||||
|
gbc_label.gridx = 5;
|
||||||
|
gbc_label.gridy = 0;
|
||||||
|
add(label, gbc_label);
|
||||||
|
|
||||||
|
spSeconds = new JSpinner();
|
||||||
|
GridBagConstraints gbc_spSeconds = new GridBagConstraints();
|
||||||
|
gbc_spSeconds.fill = GridBagConstraints.BOTH;
|
||||||
|
gbc_spSeconds.gridx = 6;
|
||||||
|
gbc_spSeconds.gridy = 0;
|
||||||
|
add(spSeconds, gbc_spSeconds);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public Integer getValue(){
|
||||||
|
if (!spSeconds.isEnabled())
|
||||||
|
return null;
|
||||||
|
|
||||||
|
return ((Integer)spSeconds.getValue()) +
|
||||||
|
((Integer)spMinutes.getValue()) * 60 +
|
||||||
|
((Integer)spHours.getValue()) * 3600 +
|
||||||
|
((Integer)spDays.getValue()) * 86400
|
||||||
|
;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setValue(Integer seconds){
|
||||||
|
Integer mod = seconds;
|
||||||
|
|
||||||
|
if (mod == null){
|
||||||
|
spSeconds.setEnabled(false);
|
||||||
|
spMinutes.setEnabled(false);
|
||||||
|
spHours.setEnabled(false);
|
||||||
|
spDays.setEnabled(false);
|
||||||
|
} else {
|
||||||
|
spSeconds.setEnabled(true);
|
||||||
|
spMinutes.setEnabled(true);
|
||||||
|
spHours.setEnabled(true);
|
||||||
|
spDays.setEnabled(true);
|
||||||
|
|
||||||
|
spDays.setValue(mod / 86400);
|
||||||
|
mod %= 86400;
|
||||||
|
spHours.setValue(mod / 3600);
|
||||||
|
mod %= 3600;
|
||||||
|
spMinutes.setValue(mod / 60);
|
||||||
|
mod %= 60;
|
||||||
|
spSeconds.setValue(mod);
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
Loading…
Reference in New Issue