Lines 17-32
Link Here
|
17 |
import java.util.prefs.PreferenceChangeListener; |
17 |
import java.util.prefs.PreferenceChangeListener; |
18 |
import java.util.prefs.Preferences; |
18 |
import java.util.prefs.Preferences; |
19 |
import javax.swing.AbstractAction; |
19 |
import javax.swing.AbstractAction; |
|
|
20 |
import javax.swing.AbstractButton; |
20 |
import javax.swing.Action; |
21 |
import javax.swing.Action; |
21 |
import javax.swing.Icon; |
22 |
import javax.swing.Icon; |
22 |
import javax.swing.JCheckBoxMenuItem; |
23 |
import javax.swing.JCheckBoxMenuItem; |
23 |
import javax.swing.JMenuItem; |
24 |
import javax.swing.JMenuItem; |
|
|
25 |
import javax.swing.JToggleButton; |
24 |
import org.openide.util.ContextAwareAction; |
26 |
import org.openide.util.ContextAwareAction; |
25 |
import org.openide.util.ImageUtilities; |
27 |
import org.openide.util.ImageUtilities; |
26 |
import org.openide.util.Lookup; |
28 |
import org.openide.util.Lookup; |
27 |
import org.openide.util.LookupEvent; |
29 |
import org.openide.util.LookupEvent; |
28 |
import org.openide.util.LookupListener; |
30 |
import org.openide.util.LookupListener; |
29 |
import org.openide.util.NbPreferences; |
31 |
import org.openide.util.NbPreferences; |
|
|
32 |
import org.openide.util.WeakSet; |
30 |
import org.openide.util.actions.Presenter; |
33 |
import org.openide.util.actions.Presenter; |
31 |
import org.openide.util.actions.ActionInvoker; |
34 |
import org.openide.util.actions.ActionInvoker; |
32 |
|
35 |
|
Lines 256-262
Link Here
|
256 |
} |
259 |
} |
257 |
|
260 |
|
258 |
static final class CheckBox extends AlwaysEnabledAction |
261 |
static final class CheckBox extends AlwaysEnabledAction |
259 |
implements Presenter.Menu, Presenter.Popup, PreferenceChangeListener, LookupListener |
262 |
implements Presenter.Menu, Presenter.Popup, Presenter.Toolbar, PreferenceChangeListener, LookupListener |
260 |
{ |
263 |
{ |
261 |
|
264 |
|
262 |
private static final long serialVersionUID = 1L; |
265 |
private static final long serialVersionUID = 1L; |
Lines 271-276
Link Here
|
271 |
|
274 |
|
272 |
private JCheckBoxMenuItem popupItem; |
275 |
private JCheckBoxMenuItem popupItem; |
273 |
|
276 |
|
|
|
277 |
private WeakSet<AbstractButton> toolbarItems; |
278 |
|
274 |
private Preferences preferencesNode; |
279 |
private Preferences preferencesNode; |
275 |
|
280 |
|
276 |
private Lookup.Result<Preferences> preferencesNodeResult; |
281 |
private Lookup.Result<Preferences> preferencesNodeResult; |
Lines 311-316
Link Here
|
311 |
return popupItem; |
316 |
return popupItem; |
312 |
} |
317 |
} |
313 |
|
318 |
|
|
|
319 |
public AbstractButton getToolbarPresenter() { |
320 |
if(toolbarItems == null) { |
321 |
toolbarItems = new WeakSet<AbstractButton>(4); |
322 |
} |
323 |
AbstractButton b = new DefaultIconToggleButton(); |
324 |
toolbarItems.add(b); |
325 |
b.setSelected(isPreferencesSelected()); |
326 |
Actions.connect(b, this); |
327 |
return b; |
328 |
} |
329 |
|
314 |
public void preferenceChange(PreferenceChangeEvent pce) { |
330 |
public void preferenceChange(PreferenceChangeEvent pce) { |
315 |
updateItemsSelected(); |
331 |
updateItemsSelected(); |
316 |
} |
332 |
} |
Lines 351-356
Link Here
|
351 |
if (popupItem != null) { |
367 |
if (popupItem != null) { |
352 |
popupItem.setSelected(selected); |
368 |
popupItem.setSelected(selected); |
353 |
} |
369 |
} |
|
|
370 |
if (toolbarItems != null) { |
371 |
for(AbstractButton b : toolbarItems) { |
372 |
b.setSelected(selected); |
373 |
} |
374 |
} |
354 |
} |
375 |
} |
355 |
|
376 |
|
356 |
private synchronized Preferences prefs() { |
377 |
private synchronized Preferences prefs() { |
Lines 423-426
Link Here
|
423 |
|
444 |
|
424 |
} |
445 |
} |
425 |
|
446 |
|
|
|
447 |
/** |
448 |
* A button that provides a default icon when no text and no custom icon have been set. |
449 |
* Copied from Toolbar.java and made a toggle button. |
450 |
*/ |
451 |
private static class DefaultIconToggleButton extends JToggleButton { |
452 |
private Icon unknownIcon; |
453 |
|
454 |
@Override |
455 |
public Icon getIcon() { |
456 |
Icon retValue = super.getIcon(); |
457 |
if( null == retValue && (null == getText() || getText().isEmpty()) ) { |
458 |
if (unknownIcon == null) { |
459 |
unknownIcon = ImageUtilities.loadImageIcon("org/openide/loaders/unknown.gif", false); //NOI18N |
460 |
} |
461 |
retValue = unknownIcon; |
462 |
} |
463 |
return retValue; |
464 |
} |
465 |
} |
466 |
|
426 |
} |
467 |
} |