/******************************************************************************* * Copyright (c) 2016 Weasis Team and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * Nicolas Roduit - initial API and implementation *******************************************************************************/ package org.weasis.dicom.viewer2d; import java.awt.Component; import java.awt.Graphics; import javax.swing.AbstractButton; import javax.swing.Icon; import javax.swing.ImageIcon; import javax.swing.JPopupMenu; import javax.swing.JToggleButton; import javax.swing.UIManager; import org.weasis.core.api.gui.util.ActionState; import org.weasis.core.api.gui.util.ActionW; import org.weasis.core.api.gui.util.ComboItemListener; import org.weasis.core.api.gui.util.DropButtonIcon; import org.weasis.core.api.gui.util.DropDownButton; import org.weasis.core.api.gui.util.GroupPopup; import org.weasis.core.api.gui.util.ToggleButtonListener; import org.weasis.core.ui.editor.image.ImageViewerEventManager; import org.weasis.core.ui.util.WtoolBar; import org.weasis.dicom.codec.DicomImageElement; public class LutToolBar extends WtoolBar { public LutToolBar(final ImageViewerEventManager<DicomImageElement> eventManager, int index) { super(Messages.getString("LutToolBar.lookupbar"), index); //$NON-NLS-1$ if (eventManager == null) { throw new IllegalArgumentException("EventManager cannot be null"); //$NON-NLS-1$ } GroupPopup menu = null; ActionState presetAction = eventManager.getAction(ActionW.PRESET); if (presetAction instanceof ComboItemListener) { menu = ((ComboItemListener) presetAction).createGroupRadioMenu(); } final DropDownButton presetButton = new DropDownButton(ActionW.WINLEVEL.cmd(), buildWLIcon(), menu) { @Override protected JPopupMenu getPopupMenu() { JPopupMenu menu = (getMenuModel() == null) ? new JPopupMenu() : getMenuModel().createJPopupMenu(); menu.setInvoker(this); return menu; } }; presetButton.setToolTipText(Messages.getString("LutToolBar.presets")); //$NON-NLS-1$ add(presetButton); if (presetAction != null) { presetAction.registerActionState(presetButton); } GroupPopup menuLut = null; ActionState lutAction = eventManager.getAction(ActionW.LUT); if (lutAction instanceof ComboItemListener) { menuLut = ((ComboItemListener) lutAction).createGroupRadioMenu(); } final DropDownButton lutButton = new DropDownButton(ActionW.LUT.cmd(), buildLutIcon(), menuLut) { @Override protected JPopupMenu getPopupMenu() { JPopupMenu menu = (getMenuModel() == null) ? new JPopupMenu() : getMenuModel().createJPopupMenu(); menu.setInvoker(this); return menu; } }; lutButton.setToolTipText(Messages.getString("LutToolBar.lustSelection")); //$NON-NLS-1$ add(lutButton); if (lutAction != null) { lutAction.registerActionState(lutButton); } final JToggleButton invertButton = new JToggleButton(); invertButton.setToolTipText(ActionW.INVERT_LUT.getTitle()); invertButton.setIcon(new ImageIcon(WtoolBar.class.getResource("/icon/32x32/invert.png"))); //$NON-NLS-1$ ActionState invlutAction = eventManager.getAction(ActionW.INVERT_LUT); if (invlutAction instanceof ToggleButtonListener) { ((ToggleButtonListener) invlutAction).registerActionState(invertButton); } add(invertButton); } private Icon buildLutIcon() { final Icon mouseIcon = new ImageIcon(WtoolBar.class.getResource("/icon/32x32/lut.png")); //$NON-NLS-1$ return new DropButtonIcon(new Icon() { @Override public void paintIcon(Component c, Graphics g, int x, int y) { if (c instanceof AbstractButton) { AbstractButton model = (AbstractButton) c; Icon icon = null; if (!model.isEnabled()) { icon = UIManager.getLookAndFeel().getDisabledIcon(model, mouseIcon); } if (icon == null) { icon = mouseIcon; } icon.paintIcon(c, g, x, y); } } @Override public int getIconWidth() { return mouseIcon.getIconWidth(); } @Override public int getIconHeight() { return mouseIcon.getIconHeight(); } }); } private Icon buildWLIcon() { final Icon mouseIcon = new ImageIcon(WtoolBar.class.getResource("/icon/32x32/winLevel.png")); //$NON-NLS-1$ return new DropButtonIcon(new Icon() { @Override public void paintIcon(Component c, Graphics g, int x, int y) { if (c instanceof AbstractButton) { AbstractButton model = (AbstractButton) c; Icon icon = null; if (!model.isEnabled()) { icon = UIManager.getLookAndFeel().getDisabledIcon(model, mouseIcon); } if (icon == null) { icon = mouseIcon; } icon.paintIcon(c, g, x, y); } } @Override public int getIconWidth() { return mouseIcon.getIconWidth(); } @Override public int getIconHeight() { return mouseIcon.getIconHeight(); } }); } }