/*************************************************** * * cismet GmbH, Saarbruecken, Germany * * ... and it just works. * ****************************************************/ package de.cismet.cismap.commons.gui.layerwidget; /** * * @author thorsten.hell@cismet.de */ import java.awt.Component; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.util.Observable; import java.util.Observer; import javax.swing.*; import javax.swing.JComponent; import javax.swing.JFrame; import javax.swing.JProgressBar; import javax.swing.JScrollPane; import javax.swing.JTable; import javax.swing.Timer; import javax.swing.table.*; import javax.swing.table.DefaultTableModel; import javax.swing.table.TableCellRenderer; /* * Created on Apr 18, 2005 * JTable_Observer.java */ /** * DOCUMENT ME! * * @author Mayank Joshi * @version $Revision$, $Date$ */ public class JTable_Observer extends JFrame implements Observer { //~ Instance fields -------------------------------------------------------- JTable table; MyDefaultTableModel dtm; //~ Constructors ----------------------------------------------------------- /** * Creates a new JTable_Observer object. */ private JTable_Observer() { super(org.openide.util.NbBundle.getMessage(JTable_Observer.class, "JTable_Observer.title")); // NOI18N createUI(); new ObservableChild().addObserver(this); } //~ Methods ---------------------------------------------------------------- /** * DOCUMENT ME! * * @param args DOCUMENT ME! */ public static void main(final String[] args) { new JTable_Observer(); } /** * DOCUMENT ME! */ private void createUI() { dtm = new MyDefaultTableModel( new Object[] { org.openide.util.NbBundle.getMessage(JTable_Observer.class, "JTable_Observer.dtm.title1"), // NOI18N org.openide.util.NbBundle.getMessage(JTable_Observer.class, "JTable_Observer.dtm.title2") }, 0); // NOI18N final CustomProgressBar progressBar = new CustomProgressBar(); final CustomProgressBar progressBar2 = new CustomProgressBar(); final CustomProgressBar progressBar3 = new CustomProgressBar(); progressBar.setBorderPainted(true); progressBar.setIndeterminate(true); progressBar2.setBorderPainted(true); progressBar2.setIndeterminate(true); progressBar3.setBorderPainted(true); progressBar3.setIndeterminate(true); dtm.addRow( new Object[] { org.openide.util.NbBundle.getMessage(JTable_Observer.class, "JTable_Observer.row1"), progressBar }); // NOI18N dtm.addRow( new Object[] { org.openide.util.NbBundle.getMessage(JTable_Observer.class, "JTable_Observer.row2"), progressBar2 }); // NOI18N dtm.addRow( new Object[] { org.openide.util.NbBundle.getMessage(JTable_Observer.class, "JTable_Observer.row3"), progressBar3 }); // NOI18N table = new JTable(dtm); table.getColumnModel().getColumn(1).setCellRenderer(new CustomProgressBar()); final JScrollPane jsp = new JScrollPane(table); getContentPane().add(jsp); pack(); setVisible(true); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } @Override public void update(final Observable o, final Object arg) { ((DefaultTableModel)table.getModel()).fireTableCellUpdated(0, 1); ((DefaultTableModel)table.getModel()).fireTableCellUpdated(1, 1); ((DefaultTableModel)table.getModel()).fireTableCellUpdated(2, 1); } } /** * DOCUMENT ME! * * @version $Revision$, $Date$ */ class ObservableChild extends Observable implements ActionListener { //~ Instance fields -------------------------------------------------------- Timer timer = new Timer(500, this); //~ Constructors ----------------------------------------------------------- /** * Creates a new ObservableChild object. */ public ObservableChild() { super(); timer.setRepeats(true); timer.start(); } //~ Methods ---------------------------------------------------------------- @Override public void actionPerformed(final ActionEvent e) { setChanged(); notifyObservers(); } } /** * DOCUMENT ME! * * @version $Revision$, $Date$ */ class CustomProgressBar extends JProgressBar implements TableCellRenderer { //~ Methods ---------------------------------------------------------------- @Override public Component getTableCellRendererComponent(final JTable table, final Object value, final boolean isSelected, final boolean hasFocus, final int row, final int column) { if (value instanceof JComponent) { return (JComponent)value; } else { return null; } } @Override public boolean isDisplayable() { return true; } } /** * DOCUMENT ME! * * @version $Revision$, $Date$ */ class MyDefaultTableModel extends DefaultTableModel { //~ Constructors ----------------------------------------------------------- /** * Creates a new MyDefaultTableModel object. * * @param obj DOCUMENT ME! * @param i DOCUMENT ME! */ public MyDefaultTableModel(final Object[] obj, final int i) { super(obj, i); } //~ Methods ---------------------------------------------------------------- @Override public boolean isCellEditable(final int row, final int column) { if (column == 1) { return false; } else { return true; } } }