1 | |
package de.glossmaker.gui.bibtex.bars; |
2 | |
|
3 | |
import java.awt.event.ActionListener; |
4 | |
import java.awt.event.MouseAdapter; |
5 | |
import java.awt.event.MouseEvent; |
6 | |
|
7 | |
import javax.swing.ImageIcon; |
8 | |
import javax.swing.JButton; |
9 | |
import javax.swing.JMenuItem; |
10 | |
import javax.swing.JPopupMenu; |
11 | |
import javax.swing.JToolBar; |
12 | |
|
13 | |
import org.bushe.swing.event.EventBus; |
14 | |
import org.bushe.swing.event.EventTopicSubscriber; |
15 | |
|
16 | |
import de.glossmaker.bib.datastructure.EBibTeXReference; |
17 | |
import de.glossmaker.bib.undo.UndoBibStack; |
18 | |
import de.glossmaker.gloss.language.Translation; |
19 | |
import de.glossmaker.gui.bibtex.BibItemEvents; |
20 | |
import de.glossmaker.gui.bibtex.EEventCommands; |
21 | |
import de.glossmaker.gui.bibtex.EFileOperations; |
22 | |
import de.glossmaker.gui.bibtex.EUserInteration; |
23 | |
import de.glossmaker.gui.gloss.bars.HelpItemChangeListener; |
24 | |
import de.glossmaker.gui.gloss.help.HelpSystem; |
25 | |
import de.glossmaker.undo.EUndoCommands; |
26 | |
|
27 | |
|
28 | |
|
29 | |
|
30 | |
|
31 | |
|
32 | 0 | public class BibTexItemsToolBar extends JToolBar implements EventTopicSubscriber<BibItemEvents> { |
33 | |
private static final long serialVersionUID = -6934078123670740933L; |
34 | |
|
35 | 0 | private JButton mNew = null; |
36 | 0 | private JButton mOpen = null; |
37 | 0 | private JButton mSave = null; |
38 | 0 | private JPopupMenu mSavePopUp = null; |
39 | 0 | private JButton mAdd = null; |
40 | 0 | private JPopupMenu mAddPopUp = null; |
41 | 0 | private JButton mRemove = null; |
42 | 0 | private JPopupMenu mRemovePopUp = null; |
43 | 0 | private JButton mUndo = null; |
44 | 0 | private JButton mRedo = null; |
45 | 0 | private JButton mHelp = null; |
46 | 0 | private JButton mClose = null; |
47 | 0 | private Translation mTranslation = null; |
48 | 0 | private ActionListener mActionListener = null; |
49 | |
|
50 | 0 | private JMenuItem mSaveFile = null; |
51 | 0 | private JMenuItem mSaveAsFile = null; |
52 | |
private JMenuItem mRemoveSelected; |
53 | |
private JMenuItem mRemoveAll; |
54 | |
|
55 | 0 | public BibTexItemsToolBar(ActionListener actionListener) { |
56 | 0 | mActionListener = actionListener; |
57 | 0 | for(EEventCommands event : EEventCommands.values()) { |
58 | 0 | EventBus.subscribe(event.toString(), this); |
59 | |
} |
60 | 0 | for (EUndoCommands event : EUndoCommands.values()) { |
61 | 0 | EventBus.subscribe(event.toString(), this); |
62 | |
} |
63 | 0 | mTranslation = Translation.getInstance(); |
64 | 0 | initialize(); |
65 | 0 | } |
66 | |
|
67 | |
private void initialize() { |
68 | 0 | mNew = new JButton(new ImageIcon(BibTexItemsToolBar.class.getResource("/icons/new.png"))); |
69 | 0 | mNew.setActionCommand(EFileOperations.FILE_NEW.toString()); |
70 | 0 | mNew.addActionListener(mActionListener); |
71 | 0 | mNew.addChangeListener(new HelpItemChangeListener("section.bibeditor.new")); |
72 | 0 | this.add(mNew); |
73 | |
|
74 | 0 | mOpen = new JButton(new ImageIcon(BibTexItemsToolBar.class.getResource("/icons/open.png"))); |
75 | 0 | mOpen.setActionCommand(EFileOperations.FILE_OPEN.toString()); |
76 | 0 | mOpen.addActionListener(mActionListener); |
77 | 0 | mOpen.addChangeListener(new HelpItemChangeListener("section.bibeditor.open")); |
78 | 0 | this.add(mOpen); |
79 | |
|
80 | 0 | mSavePopUp = new JPopupMenu(); |
81 | 0 | mSaveFile = new JMenuItem(); |
82 | 0 | mSaveFile.setActionCommand(EFileOperations.FILE_SAVE.toString()); |
83 | 0 | mSaveFile.addActionListener(mActionListener); |
84 | 0 | mSaveFile.addChangeListener(new HelpItemChangeListener("section.bibeditor.save")); |
85 | 0 | mSavePopUp.add(mSaveFile); |
86 | 0 | mSaveAsFile = new JMenuItem(); |
87 | 0 | mSaveAsFile.setActionCommand(EFileOperations.FILE_SAVE_AS.toString()); |
88 | 0 | mSaveAsFile.addActionListener(mActionListener); |
89 | 0 | mSaveAsFile.addChangeListener(new HelpItemChangeListener("section.bibeditor.save")); |
90 | 0 | mSavePopUp.add(mSaveAsFile); |
91 | |
|
92 | 0 | mSave = new JButton(new ImageIcon(BibTexItemsToolBar.class.getResource("/icons/save.png"))); |
93 | 0 | mSave.addMouseListener(new MouseAdapter() { |
94 | |
public void mousePressed(MouseEvent e) { |
95 | 0 | mSavePopUp.show(e.getComponent(), e.getX(), e.getY()); |
96 | 0 | } |
97 | |
}); |
98 | 0 | mSave.addChangeListener(new HelpItemChangeListener("section.bibeditor.save")); |
99 | 0 | this.add(mSave); |
100 | |
|
101 | 0 | this.add(new Separator()); |
102 | 0 | mAddPopUp = new JPopupMenu(); |
103 | 0 | for(EBibTeXReference reference : EBibTeXReference.values()) { |
104 | 0 | JMenuItem menuItem = new JMenuItem(reference.toString().toLowerCase()); |
105 | 0 | menuItem.setActionCommand(reference.toString()); |
106 | 0 | menuItem.addActionListener(mActionListener); |
107 | 0 | menuItem.addChangeListener(new HelpItemChangeListener("section.bibeditor.add." |
108 | |
+ reference.toString().toLowerCase())); |
109 | 0 | mAddPopUp.add(menuItem); |
110 | |
} |
111 | |
|
112 | 0 | mAdd = new JButton(new ImageIcon(BibTexItemsToolBar.class.getResource("/icons/add.png"))); |
113 | 0 | mAdd.addMouseListener(new MouseAdapter() { |
114 | |
public void mousePressed(MouseEvent e) { |
115 | 0 | mAddPopUp.show(e.getComponent(), e.getX(), e.getY()); |
116 | 0 | } |
117 | |
}); |
118 | 0 | mAdd.setActionCommand(EEventCommands.ADD.toString()); |
119 | 0 | mAdd.addActionListener(mActionListener); |
120 | 0 | mAdd.addChangeListener(new HelpItemChangeListener("section.bibeditor.add")); |
121 | 0 | this.add(mAdd); |
122 | |
|
123 | 0 | mRemovePopUp = new JPopupMenu(); |
124 | 0 | mRemoveSelected = new JMenuItem(); |
125 | 0 | mRemoveSelected.setActionCommand(EEventCommands.REMOVE_SELECTED.toString()); |
126 | 0 | mRemoveSelected.addActionListener(mActionListener); |
127 | 0 | mRemoveSelected.addChangeListener(new HelpItemChangeListener("section.bibeditor.remove")); |
128 | 0 | mRemovePopUp.add(mRemoveSelected); |
129 | |
|
130 | 0 | mRemoveAll = new JMenuItem(); |
131 | 0 | mRemoveAll.setActionCommand(EEventCommands.REMOVE_ALL.toString()); |
132 | 0 | mRemoveAll.addActionListener(mActionListener); |
133 | 0 | mRemoveAll.addChangeListener(new HelpItemChangeListener("section.bibeditor.remove")); |
134 | 0 | mRemovePopUp.add(mRemoveAll); |
135 | |
|
136 | 0 | mRemove = new JButton(new ImageIcon(BibTexItemsToolBar.class.getResource("/icons/remove.png"))); |
137 | 0 | mRemove.addMouseListener(new MouseAdapter() { |
138 | |
public void mousePressed(MouseEvent e) { |
139 | 0 | mRemovePopUp.show(e.getComponent(), e.getX(), e.getY()); |
140 | 0 | } |
141 | |
}); |
142 | 0 | mRemove.addChangeListener(new HelpItemChangeListener("section.bibeditor.remove")); |
143 | 0 | this.add(mRemove); |
144 | |
|
145 | 0 | this.add(new Separator()); |
146 | |
|
147 | 0 | mUndo = new JButton(new ImageIcon(BibTexItemsToolBar.class.getResource("/icons/undo.png"))); |
148 | 0 | mUndo.setActionCommand(EUndoCommands.UNDO.toString()); |
149 | 0 | mUndo.addActionListener(mActionListener); |
150 | 0 | mUndo.setEnabled(false); |
151 | 0 | mUndo.addChangeListener(new HelpItemChangeListener("section.bibeditor.undo")); |
152 | 0 | this.add(mUndo); |
153 | |
|
154 | 0 | mRedo = new JButton(new ImageIcon(BibTexItemsToolBar.class.getResource("/icons/redo.png"))); |
155 | 0 | mRedo.setActionCommand(EUndoCommands.REDO.toString()); |
156 | 0 | mRedo.addActionListener(mActionListener); |
157 | 0 | mRedo.setEnabled(false); |
158 | 0 | mRedo.addChangeListener(new HelpItemChangeListener("section.bibeditor.redo")); |
159 | 0 | this.add(mRedo); |
160 | |
|
161 | 0 | this.add(new Separator()); |
162 | |
|
163 | 0 | mHelp = new JButton(new ImageIcon(BibTexItemsToolBar.class.getResource("/icons/help.png"))); |
164 | 0 | HelpSystem.getInstance().enableHelpOnButton(mHelp, "section.bibeditor", null); |
165 | 0 | mHelp.addChangeListener(new HelpItemChangeListener("section.bibeditor")); |
166 | 0 | this.add(mHelp); |
167 | |
|
168 | 0 | this.add(new Separator()); |
169 | |
|
170 | 0 | mClose = new JButton(new ImageIcon(BibTexItemsToolBar.class.getResource("/icons/close.png"))); |
171 | 0 | mClose.setActionCommand(EUserInteration.CLOSE_WINDOW.toString()); |
172 | 0 | mClose.addActionListener(mActionListener); |
173 | 0 | mClose.addChangeListener(new HelpItemChangeListener("section.bibeditor.close")); |
174 | 0 | this.add(mClose); |
175 | |
|
176 | 0 | changeLanguage(); |
177 | 0 | } |
178 | |
|
179 | |
private void changeLanguage() { |
180 | 0 | mNew.setToolTipText(mTranslation.getValue("bibtex.toolbar.new.tooltip")); |
181 | 0 | mOpen.setToolTipText(mTranslation.getValue("bibtex.toolbar.open.tooltip")); |
182 | 0 | mSave.setToolTipText(mTranslation.getValue("bibtex.toolbar.save.tooltip")); |
183 | 0 | mSaveFile.setText(mTranslation.getValue("bibtex.toolbar.save.popup.text")); |
184 | 0 | mSaveFile.setToolTipText(mTranslation.getValue("bibtex.toolbar.save.popup.tooltip")); |
185 | 0 | mSaveAsFile.setText(mTranslation.getValue("bibtex.toolbar.save_as.popup.text")); |
186 | 0 | mSaveAsFile.setToolTipText(mTranslation.getValue("bibtex.toolbar.save_as.popup.tooltip")); |
187 | 0 | mAdd.setToolTipText(mTranslation.getValue("bibtex.toolbar.add.tooltip")); |
188 | 0 | mRemove.setToolTipText(mTranslation.getValue("bibtex.toolbar.remove.tooltip")); |
189 | 0 | mRemoveSelected.setText(mTranslation.getValue("bibtex.toolbar.remove.selected.text")); |
190 | 0 | mRemoveSelected.setToolTipText(mTranslation.getValue("bibtex.toolbar.remove.selected.tooltip")); |
191 | 0 | mRemoveAll.setText(mTranslation.getValue("bibtex.toolbar.remove.all.text")); |
192 | 0 | mRemoveAll.setToolTipText(mTranslation.getValue("bibtex.toolbar.remove.all.tooltip")); |
193 | 0 | mUndo.setToolTipText(mTranslation.getValue("bibtex.toolbar.undo.tooltip")); |
194 | 0 | mRedo.setToolTipText(mTranslation.getValue("bibtex.toolbar.redo.tooltip")); |
195 | 0 | mHelp.setToolTipText(mTranslation.getValue("bibtex.toolbar.help.tooltip")); |
196 | 0 | mClose.setToolTipText(mTranslation.getValue("bibtex.toolbar.close.tooltip")); |
197 | 0 | } |
198 | |
|
199 | |
@Override |
200 | |
public void onEvent(String command, BibItemEvents events) { |
201 | 0 | mRedo.setEnabled(UndoBibStack.getInstance().redoSize() > 0); |
202 | 0 | mUndo.setEnabled(UndoBibStack.getInstance().undoSize() > 0); |
203 | 0 | } |
204 | |
} |