/******************************************************************************* * 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.explorer; import java.awt.Dimension; import java.awt.GridBagConstraints; import java.awt.Insets; import java.awt.Window; import java.util.ArrayList; import javax.swing.JButton; import javax.swing.tree.DefaultMutableTreeNode; import org.osgi.framework.BundleContext; import org.osgi.framework.FrameworkUtil; import org.osgi.framework.ServiceReference; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.weasis.core.api.gui.InsertableUtil; import org.weasis.core.api.gui.util.AbstractItemDialogPage; import org.weasis.core.api.gui.util.AbstractWizardDialog; public class DicomImport extends AbstractWizardDialog { private static final Logger LOGGER = LoggerFactory.getLogger(DicomImport.class); private boolean cancelVeto = false; private final DicomModel dicomModel; public DicomImport(Window parent, final DicomModel dicomModel) { super(parent, Messages.getString("DicomImport.imp_dicom"), ModalityType.APPLICATION_MODAL, //$NON-NLS-1$ new Dimension(640, 480)); this.dicomModel = dicomModel; final JButton importandClose = new JButton(Messages.getString("DicomImport.impAndClose0")); //$NON-NLS-1$ importandClose.addActionListener(e -> { importSelection(); cancel(); }); final GridBagConstraints gridBagConstraints0 = new GridBagConstraints(); gridBagConstraints0.insets = new Insets(10, 15, 10, 0); gridBagConstraints0.anchor = GridBagConstraints.EAST; gridBagConstraints0.gridy = 0; gridBagConstraints0.gridx = 0; gridBagConstraints0.weightx = 1.0; jPanelButtom.add(importandClose, gridBagConstraints0); final JButton importButton = new JButton(); importButton.addActionListener(e -> importSelection()); importButton.setText(Messages.getString("DicomImport.imp")); //$NON-NLS-1$ final GridBagConstraints gridBagConstraints1 = new GridBagConstraints(); gridBagConstraints1.insets = new Insets(10, 15, 10, 0); gridBagConstraints1.anchor = GridBagConstraints.EAST; gridBagConstraints1.gridy = 0; gridBagConstraints1.gridx = 1; jPanelButtom.add(importButton, gridBagConstraints1); initializePages(); pack(); showPageFirstPage(); } @Override protected void initializePages() { ArrayList<AbstractItemDialogPage> list = new ArrayList<>(); list.add(new LocalImport()); list.add(new DicomZipImport()); list.add(new DicomDirImport()); BundleContext context = FrameworkUtil.getBundle(this.getClass()).getBundleContext(); try { for (ServiceReference<DicomImportFactory> service : context.getServiceReferences(DicomImportFactory.class, null)) { DicomImportFactory factory = context.getService(service); if (factory != null) { ImportDicom page = factory.createDicomImportPage(null); if (page instanceof AbstractItemDialogPage) { list.add((AbstractItemDialogPage) page); } } } } catch (Exception e) { LOGGER.error("init import pages", e); //$NON-NLS-1$ } InsertableUtil.sortInsertable(list); for (AbstractItemDialogPage page : list) { pagesRoot.add(new DefaultMutableTreeNode(page)); } iniTree(); } private void importSelection() { Object object = null; try { object = jScrollPanePage.getViewport().getComponent(0); } catch (Exception ex) { } if (object instanceof ImportDicom) { ImportDicom selectedPage = (ImportDicom) object; selectedPage.importDICOM(dicomModel, null); } } public void setCancelVeto(boolean cancelVeto) { this.cancelVeto = cancelVeto; } @Override public void cancel() { if (cancelVeto) { cancelVeto = false; } else { dispose(); } } @Override public void dispose() { closeAllPages(); super.dispose(); } }