Ignore:
Timestamp:
2009-08-31T08:06:25+02:00 (10 years ago)
Author:
Gubaer
Message:

Improved history feature

Location:
trunk/src/org/openstreetmap/josm/gui/history
Files:
2 added
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/org/openstreetmap/josm/gui/history/HistoryBrowserDialog.java

    r2017 r2019  
    88import java.awt.FlowLayout;
    99import java.awt.event.ActionEvent;
     10import java.awt.event.WindowAdapter;
     11import java.awt.event.WindowEvent;
    1012
    1113import javax.swing.AbstractAction;
    12 import javax.swing.JButton;
    1314import javax.swing.JDialog;
    1415import javax.swing.JOptionPane;
     
    1718import org.openstreetmap.josm.Main;
    1819import org.openstreetmap.josm.data.osm.history.History;
     20import org.openstreetmap.josm.data.osm.history.HistoryDataSet;
     21import org.openstreetmap.josm.data.osm.history.HistoryDataSetListener;
     22import org.openstreetmap.josm.gui.SideButton;
    1923import org.openstreetmap.josm.gui.dialogs.HistoryDialog;
     24import org.openstreetmap.josm.tools.ImageProvider;
    2025
    2126/**
     
    2429 *
    2530 */
    26 public class HistoryBrowserDialog extends JDialog {
     31public class HistoryBrowserDialog extends JDialog implements HistoryDataSetListener{
    2732
    2833    /** the embedded browser */
     
    3742        String title = "";
    3843        switch(h.getEarliest().getType()) {
    39         case NODE:  title = marktr("History for node {0}"); break;
    40         case WAY: title = marktr("History for way {0}"); break;
    41         case RELATION:  title = marktr("History for relation {0}"); break;
     44            case NODE:  title = marktr("History for node {0}"); break;
     45            case WAY: title = marktr("History for way {0}"); break;
     46            case RELATION:  title = marktr("History for relation {0}"); break;
    4247        }
    4348        setTitle(tr(
     
    5762
    5863        JPanel pnl = new JPanel();
    59         pnl.setLayout(new FlowLayout(FlowLayout.RIGHT));
     64        pnl.setLayout(new FlowLayout(FlowLayout.CENTER));
    6065
    61         JButton btn = new JButton(new CloseAction());
     66        SideButton btn = new SideButton(new ReloadAction());
     67        btn.setName("btn.reload");
     68        pnl.add(btn);
     69
     70        btn = new SideButton(new CloseAction());
    6271        btn.setName("btn.close");
    6372        pnl.add(btn);
     
    7786        setHistory(history);
    7887        renderTitle(history);
     88        HistoryDataSet.getInstance().addHistoryDataSetListener(this);
     89        addWindowListener(new WindowClosingAdapter());
    7990    }
    8091
     
    8798    }
    8899
    89     /**
    90      * registers this dialog with the registry of history dialogs
    91      *
    92      * @see HistoryDialog#registerHistoryBrowserDialog(long, HistoryBrowserDialog)
    93      */
    94     protected void register() {
    95         HistoryDialog.registerHistoryBrowserDialog(browser.getHistory().getId(), this);
    96     }
    97 
    98     /**
    99      * unregisters this dialog from the registry of history dialogs
    100      *
    101      * @see HistoryDialog#unregisterHistoryBrowserDialog(long)
    102      */
    103     protected void unregister() {
    104         HistoryDialog.unregisterHistoryBrowserDialog(browser.getHistory().getId());
    105     }
    106 
    107     @Override
    108     public void setVisible(boolean visible) {
    109         if (visible) {
    110             register();
    111             toFront();
    112         } else {
    113             unregister();
     100    public void historyUpdated(HistoryDataSet source, long primitiveId) {
     101        if (primitiveId == browser.getHistory().getId()) {
     102            browser.populate(source.getHistory(primitiveId));
     103        } else if (primitiveId == 0) {
     104            browser.populate(source.getHistory(browser.getHistory().getId()));
    114105        }
    115         super.setVisible(visible);
    116106    }
    117107
     
    120110            putValue(NAME, tr("Close"));
    121111            putValue(SHORT_DESCRIPTION, tr("Close the dialog"));
     112            putValue(SMALL_ICON, ImageProvider.get("ok"));
    122113        }
    123114
    124115        public void actionPerformed(ActionEvent e) {
    125             setVisible(false);
     116            HistoryDataSet.getInstance().removeHistoryDataSetListener(HistoryBrowserDialog.this);
     117            HistoryBrowserDialogManager.getInstance().hide(HistoryBrowserDialog.this);
     118        }
     119    }
     120
     121    class ReloadAction extends AbstractAction {
     122        public ReloadAction() {
     123            putValue(NAME, tr("Reload"));
     124            putValue(SHORT_DESCRIPTION, tr("Reload the history from the server"));
     125            putValue(SMALL_ICON, ImageProvider.get("dialogs", "refresh"));
     126        }
     127
     128        public void actionPerformed(ActionEvent e) {
     129            HistoryLoadTask task = new HistoryLoadTask();
     130            task.add(browser.getHistory());
     131            Main.worker.submit(task);
     132        }
     133    }
     134
     135    class WindowClosingAdapter extends WindowAdapter {
     136        @Override
     137        public void windowClosing(WindowEvent e) {
     138            HistoryDataSet.getInstance().removeHistoryDataSetListener(HistoryBrowserDialog.this);
     139            HistoryBrowserDialogManager.getInstance().hide(HistoryBrowserDialog.this);
    126140        }
    127141    }
  • trunk/src/org/openstreetmap/josm/gui/history/HistoryBrowserModel.java

    r1709 r2019  
    103103        setChanged();
    104104        notifyObservers();
     105        versionTableModel.fireTableDataChanged();
    105106    }
    106107
  • trunk/src/org/openstreetmap/josm/gui/history/VersionTable.java

    r1709 r2019  
    5656        public void mouseClicked(MouseEvent e) {
    5757            switch(e.getClickCount()) {
    58             case 2: handleDoubleClick(e); break;
     58                case 2: handleDoubleClick(e); break;
    5959            }
    6060        }
Note: See TracChangeset for help on using the changeset viewer.