X-Git-Url: http://git.nikiroo.be/?a=blobdiff_plain;f=ui%2FBreadCrumbsBar.java;h=ed7e0bb0f9012d710ea113c9064117ec09c0759a;hb=7ce18848c8327967ce27b90abf2e280953530b5f;hp=0aea666aafb79da226422679ab508c05fc15d64a;hpb=a917f1009a1419ffa0f7817dbc7227b741744e66;p=nikiroo-utils.git diff --git a/ui/BreadCrumbsBar.java b/ui/BreadCrumbsBar.java index 0aea666..ed7e0bb 100644 --- a/ui/BreadCrumbsBar.java +++ b/ui/BreadCrumbsBar.java @@ -3,7 +3,6 @@ package be.nikiroo.utils.ui; import java.awt.BorderLayout; import java.awt.Dimension; -import java.awt.FlowLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.ComponentAdapter; @@ -13,7 +12,6 @@ import java.util.List; import javax.swing.AbstractAction; import javax.swing.BoxLayout; -import javax.swing.JButton; import javax.swing.JPanel; import javax.swing.JPopupMenu; import javax.swing.JToggleButton; @@ -23,33 +21,36 @@ import javax.swing.event.PopupMenuListener; public class BreadCrumbsBar extends ListenerPanel { private class BreadCrumb extends JPanel { - private JButton button; + private JToggleButton button; private JToggleButton down; public BreadCrumb(final DataNode node) { this.setLayout(new BorderLayout()); - button = new JButton(node.toString()); if (!node.isRoot()) { - // TODO: allow clicking on root? option? + button = new JToggleButton(node.toString()); button.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { - setSelectedNode(node); + button.setSelected(false); + if (!node.isRoot()) { + // TODO: allow clicking on root? option? + setSelectedNode(node); + } } }); - } - this.add(button, BorderLayout.CENTER); + this.add(button, BorderLayout.CENTER); + } - if (!node.getChildren().isEmpty()) { - // TODO (see things with icons included in viewer) + if ((node.isRoot() && node.getChildren().isEmpty()) + || !node.getChildren().isEmpty()) { + // TODO allow an image or ">", viewer down = new JToggleButton(">"); final JPopupMenu popup = new JPopupMenu(); for (final DataNode child : node.getChildren()) { popup.add(new AbstractAction(child.toString()) { - private static final long serialVersionUID = 1L; @Override @@ -60,7 +61,6 @@ public class BreadCrumbsBar extends ListenerPanel { } down.addActionListener(new ActionListener() { - @Override public void actionPerformed(ActionEvent ev) { if (down.isSelected()) { @@ -113,6 +113,8 @@ public class BreadCrumbsBar extends ListenerPanel { } }); + setSelectedNode(new DataNode(null, null)); + new SwingWorker, Void>() { @Override protected DataNode doInBackground() throws Exception { @@ -123,7 +125,10 @@ public class BreadCrumbsBar extends ListenerPanel { @Override protected void done() { try { - node = get(); + DataNode node = get(); + + setSelectedNode(null); + BreadCrumbsBar.this.node = node; addCrumb(node); // TODO: option? @@ -152,7 +157,7 @@ public class BreadCrumbsBar extends ListenerPanel { if (vertical) { this.setLayout(new BoxLayout(this, BoxLayout.Y_AXIS)); } else { - this.setLayout(new FlowLayout(FlowLayout.LEADING)); + this.setLayout(new WrapLayout(WrapLayout.LEADING)); } for (BreadCrumb crumb : crumbs) {