1 package org.xnap.commons.gui.factory;
2
3 import javax.swing.AbstractButton;
4 import javax.swing.Action;
5 import javax.swing.JComponent;
6 import javax.swing.JMenu;
7 import javax.swing.text.JTextComponent;
8 import org.xnap.commons.gui.action.ToggleAction;
9 import org.xnap.commons.gui.completion.Completion;
10
11 /***
12 * Defines the requirements for a factory class used by
13 * {@link org.xnap.commons.gui.Builder}.
14 */
15 public interface Factory {
16
17 /***
18 * Adds a completion mode menu to the text component which pops up
19 * when the platform dependent popup action is triggered.
20 *
21 * @param textComponent
22 * @param completion the completion object whose completion modes
23 * are set by the menu
24 */
25 void addCompletionModeMenu(JTextComponent textComponent, Completion completion);
26
27 /***
28 * Adds a completion mode menu as a sub menu to the <code>menu</code>.
29 *
30 * @param menu the menu into which the completion mode menu is plugged
31 * @param completion the completion object whose completion modes
32 * are set by the menu
33 */
34 void addCompletionModeMenu(JMenu menu, Completion completion);
35
36 /***
37 * Creates a button for an action.
38 *
39 * @param action the action
40 * @return the button
41 */
42 AbstractButton createButton(Action action);
43
44 /***
45 * Creates a checkbox for a toggle action.
46 *
47 * @param action the action
48 * @return the checkbox
49 */
50 AbstractButton createCheckBox(ToggleAction action);
51
52 /***
53 * Creates an icon button for an action that only shows the icon and
54 * not the text of the action.
55 *
56 * @param action the action
57 * @return the button
58 */
59 AbstractButton createIconButton(Action action);
60
61 /***
62 * Creates a toolbar button for an action making sure the right
63 * sized icon is used.
64 *
65 * @param action the action
66 * @return the button
67 */
68 AbstractButton createToolBarButton(Action action);
69
70 /***
71 * Creates a menu item for an action making sure the right sized icon
72 * is used.
73 *
74 * @param action the action
75 * @return the menu item
76 */
77 JComponent createMenuItem(Action action);
78
79 /***
80 * Sets a property of the factory to configure it.
81 *
82 * @param key the key
83 * @param value the value
84 */
85 void setProperty(Object key, Object value);
86
87 }