X-Git-Url: http://git.nikiroo.be/?a=blobdiff_plain;ds=inline;f=src%2Fbe%2Fnikiroo%2Ffanfix_swing%2Fgui%2FBrowserPanel.java;h=ac7eaff4d32bd794dac53cf0ee6fcc451f6ae468;hb=30c4d6ed834b52aa4ce4b252295c41b63375ecba;hp=47e55e422c9a2589188dd117dbdfdb15beafc3c4;hpb=3cdf3fd8a60d22a592e1cd0634cb108faa1f5f9f;p=fanfix.git diff --git a/src/be/nikiroo/fanfix_swing/gui/BrowserPanel.java b/src/be/nikiroo/fanfix_swing/gui/BrowserPanel.java index 47e55e4..ac7eaff 100644 --- a/src/be/nikiroo/fanfix_swing/gui/BrowserPanel.java +++ b/src/be/nikiroo/fanfix_swing/gui/BrowserPanel.java @@ -1,6 +1,7 @@ package be.nikiroo.fanfix_swing.gui; import java.awt.BorderLayout; +import java.awt.Component; import java.awt.Dimension; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; @@ -19,6 +20,7 @@ import be.nikiroo.fanfix_swing.gui.browser.AuthorTab; import be.nikiroo.fanfix_swing.gui.browser.BasicTab; import be.nikiroo.fanfix_swing.gui.browser.SourceTab; import be.nikiroo.fanfix_swing.gui.browser.TagsTab; +import be.nikiroo.fanfix_swing.gui.utils.ListenerPanel; import be.nikiroo.fanfix_swing.gui.utils.UiHelper; /** @@ -27,30 +29,37 @@ import be.nikiroo.fanfix_swing.gui.utils.UiHelper; * * @author niki */ -public class BrowserPanel extends JPanel { +public class BrowserPanel extends ListenerPanel { private static final long serialVersionUID = 1L; /** * The {@link ActionEvent} you receive from - * {@link BrowserPanel#addActionListener(ActionListener)} can return this as a - * command (see {@link ActionEvent#getActionCommand()}) if they were created in - * the scope of a source. + * {@link BrowserPanel#addActionListener(ActionListener)} can return this as + * a command (see {@link ActionEvent#getActionCommand()}) if they were + * created in the scope of a source. */ static public final String SOURCE_SELECTION = "source_selection"; /** * The {@link ActionEvent} you receive from - * {@link BrowserPanel#addActionListener(ActionListener)} can return this as a - * command (see {@link ActionEvent#getActionCommand()}) if they were created in - * the scope of an author. + * {@link BrowserPanel#addActionListener(ActionListener)} can return this as + * a command (see {@link ActionEvent#getActionCommand()}) if they were + * created in the scope of an author. */ static public final String AUTHOR_SELECTION = "author_selection"; /** * The {@link ActionEvent} you receive from - * {@link BrowserPanel#addActionListener(ActionListener)} can return this as a - * command (see {@link ActionEvent#getActionCommand()}) if they were created in - * the scope of a tag. + * {@link BrowserPanel#addActionListener(ActionListener)} can return this as + * a command (see {@link ActionEvent#getActionCommand()}) if they were + * created in the scope of a tag. */ static public final String TAGS_SELECTION = "tags_selection"; + /** + * The {@link ActionEvent} you receive from + * {@link BrowserPanel#addActionListener(ActionListener)} can return this as + * a command (see {@link ActionEvent#getActionCommand()}) if they were + * created in the scope of a tab change. + */ + static public final String TAB_CHANGE = "tab_change"; private JTabbedPane tabs; private SourceTab sourceTab; @@ -73,9 +82,9 @@ public class BrowserPanel extends JPanel { tabs.add(authorTab = new AuthorTab(index++, AUTHOR_SELECTION)); tabs.add(tagsTab = new TagsTab(index++, TAGS_SELECTION)); - setText(tabs, sourceTab, "Sources", "Tooltip for Sources"); - setText(tabs, authorTab, "Authors", "Tooltip for Authors"); - setText(tabs, tagsTab, "Tags", "Tooltip for Tags"); + configureTab(tabs, sourceTab, "Sources", "Tooltip for Sources"); + configureTab(tabs, authorTab, "Authors", "Tooltip for Authors"); + configureTab(tabs, tagsTab, "Tags", "Tooltip for Tags"); JPanel options = new JPanel(); options.setLayout(new BorderLayout()); @@ -105,6 +114,8 @@ public class BrowserPanel extends JPanel { if (!keepSelection) { unselect(); } + + fireActionPerformed(TAB_CHANGE); } }); } @@ -120,48 +131,57 @@ public class BrowserPanel extends JPanel { } } - private void setText(JTabbedPane tabs, @SuppressWarnings("rawtypes") BasicTab tab, String name, String tooltip) { + private void configureTab(JTabbedPane tabs, + @SuppressWarnings("rawtypes") BasicTab tab, String name, + String tooltip) { tab.setBaseTitle(name); tabs.setTitleAt(tab.getIndex(), tab.getTitle()); tabs.setToolTipTextAt(tab.getIndex(), tooltip); - listenTitleChange(tabs, tab); + listenTabs(tabs, tab); } - private void listenTitleChange(final JTabbedPane tabs, @SuppressWarnings("rawtypes") final BasicTab tab) { + private void listenTabs(final JTabbedPane tabs, + @SuppressWarnings("rawtypes") final BasicTab tab) { tab.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { tabs.setTitleAt(tab.getIndex(), tab.getTitle()); + fireActionPerformed(e.getActionCommand()); } }); } /** - * Get the {@link BookInfo} to highlight, even if more than one are selected. + * Get the {@link BookInfo} to highlight, even if none or more than one are + * selected. *
- * Return NULL when nothing is selected.
+ * Return a special "all" {@link BookInfo} of the correct type when nothing
+ * is selected.
*
* @return the {@link BookInfo} to highlight, can be NULL
*/
public BookInfo getHighlight() {
+ String selected1 = null;
+ Component selectedTab = tabs.getSelectedComponent();
+ if (selectedTab instanceof BasicTab) {
+ @SuppressWarnings({ "unchecked", "rawtypes" })
+ List