/*******************************************************************************
* 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.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import org.weasis.core.api.explorer.model.DataExplorerModel;
import org.weasis.core.api.gui.util.ActionState;
import org.weasis.core.api.gui.util.ActionW;
import org.weasis.core.api.gui.util.JMVUtils;
import org.weasis.core.api.media.data.MediaSeries;
import org.weasis.core.api.media.data.TagW;
import org.weasis.core.ui.editor.ViewerPluginBuilder;
import org.weasis.core.ui.editor.image.ImageViewerPlugin;
import org.weasis.core.ui.editor.image.ViewCanvas;
import org.weasis.core.ui.util.WtoolBar;
import org.weasis.dicom.explorer.DicomModel;
import org.weasis.dicom.viewer2d.mip.MipPopup;
import org.weasis.dicom.viewer2d.mip.MipPopup.MipDialog;
import org.weasis.dicom.viewer2d.mip.MipView;
import org.weasis.dicom.viewer2d.mpr.MPRFactory;
public class Basic3DToolBar<DicomImageElement> extends WtoolBar {
public Basic3DToolBar(int index) {
super(Messages.getString("Basic3DToolBar.title"), index); //$NON-NLS-1$
final JButton mprButton = new JButton(new ImageIcon(Basic3DToolBar.class.getResource("/icon/32x32/mpr.png")));//$NON-NLS-1$
mprButton.setToolTipText(Messages.getString("Basic3DToolBar.mpr")); //$NON-NLS-1$
mprButton.addActionListener(getMprAction());
add(mprButton);
final JButton mipButton = new JButton(new ImageIcon(Basic3DToolBar.class.getResource("/icon/32x32/mip.png"))); //$NON-NLS-1$
mipButton.setToolTipText(Messages.getString("Basic3DToolBar.mip")); //$NON-NLS-1$
mipButton.addActionListener(getMipAction());
add(mipButton);
// Attach 3D functions to the SCROLL_SERIES actions
ActionState scrollAction = EventManager.getInstance().getAction(ActionW.SCROLL_SERIES);
if (scrollAction != null) {
scrollAction.registerActionState(mprButton);
scrollAction.registerActionState(mipButton);
}
}
public static ActionListener getMprAction() {
return new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
EventManager eventManager = EventManager.getInstance();
MediaSeries<org.weasis.dicom.codec.DicomImageElement> s = eventManager.getSelectedSeries();
// Requires at least 5 images to build the MPR views
if (s != null && s.size(null) >= 5) {
DataExplorerModel model = (DataExplorerModel) s.getTagValue(TagW.ExplorerModel);
if (model instanceof DicomModel) {
ViewerPluginBuilder.openSequenceInPlugin(new MPRFactory(), s, model, false, false);
}
}
}
};
}
public static ActionListener getMipAction() {
return new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
EventManager eventManager = EventManager.getInstance();
ImageViewerPlugin<org.weasis.dicom.codec.DicomImageElement> container =
eventManager.getSelectedView2dContainer();
if (container instanceof View2dContainer) {
ViewCanvas<org.weasis.dicom.codec.DicomImageElement> selView = container.getSelectedImagePane();
if (selView != null) {
MediaSeries<org.weasis.dicom.codec.DicomImageElement> s = selView.getSeries();
if (s != null && s.size(null) > 2) {
container.setSelectedAndGetFocus();
MipView newView2d = new MipView(eventManager);
newView2d.registerDefaultListeners();
newView2d.initMIPSeries(selView);
container.replaceView(selView, newView2d);
MipDialog dialog = MipPopup.buildDialog(newView2d);
dialog.pack();
MipView.buildMip(dialog, newView2d, false);
dialog.updateThickness();
JMVUtils.showCenterScreen(dialog, container);
}
}
}
}
};
}
}