/******************************************************************************* * 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.acquire.dockable.components; import java.awt.GridLayout; import java.util.Objects; import java.util.Optional; import javax.swing.BorderFactory; import javax.swing.ButtonGroup; import javax.swing.JPanel; import org.weasis.acquire.AcquireObject; import org.weasis.acquire.Messages; import org.weasis.acquire.dockable.EditionTool; import org.weasis.acquire.dockable.components.actions.AbstractAcquireActionPanel; import org.weasis.acquire.dockable.components.actions.AcquireAction; import org.weasis.acquire.dockable.components.actions.AcquireAction.Cmd; import org.weasis.acquire.dockable.components.actions.annotate.AnnotateAction; import org.weasis.acquire.dockable.components.actions.calibrate.CalibrationAction; import org.weasis.acquire.dockable.components.actions.contrast.ContrastAction; import org.weasis.acquire.dockable.components.actions.meta.MetadataAction; import org.weasis.acquire.dockable.components.actions.rectify.RectifyAction; public class AcquireActionButtonsPanel extends JPanel { private static final long serialVersionUID = -8768455915804608493L; private static final int PADDING = 10; private final ButtonGroup btnGroup = new ButtonGroup(); private AcquireActionButton selected; private final EditionTool editionTool; public AcquireActionButtonsPanel(EditionTool editionTool) { super(new GridLayout(2, 3, PADDING, PADDING)); setBorder(BorderFactory.createEmptyBorder(PADDING, PADDING, PADDING, PADDING)); this.editionTool = editionTool; setSelected(addNewButton(Messages.getString("AcquireActionButtonsPanel.metadata"), new MetadataAction(this))); //$NON-NLS-1$ addNewButton(Messages.getString("AcquireActionButtonsPanel.rectify"), new RectifyAction(this)); //$NON-NLS-1$ addNewButton(Messages.getString("AcquireActionButtonsPanel.contrast"), new ContrastAction(this)); //$NON-NLS-1$ addNewButton(Messages.getString("AcquireActionButtonsPanel.calib"), new CalibrationAction(this)); //$NON-NLS-1$ addNewButton(Messages.getString("AcquireActionButtonsPanel.annotation"), new AnnotateAction(this)); //$NON-NLS-1$ } private AcquireActionButton addNewButton(String title, AcquireAction action) { AcquireActionButton btn = new AcquireActionButton(title, action); add(btn); btnGroup.add(btn); return btn; } public void setSelected(AcquireActionButton selected) { Objects.requireNonNull(selected); AcquireActionButton old = this.selected; if (Objects.nonNull(old) && Objects.equals(selected.getActionCommand(), Cmd.INIT.name())) { old.getAcquireAction().validate(); } this.selected = selected; btnGroup.clearSelection(); btnGroup.setSelected(this.selected.getModel(), true); Optional.ofNullable(AcquireObject.getImageInfo()) .ifPresent(i -> this.selected.getCentralPanel().initValues(i, i.getNextValues())); editionTool.setCentralPanel((AbstractAcquireActionPanel) selected.getCentralPanel()); editionTool.setBottomPanelActions(selected.getAcquireAction()); } public AcquireActionButton getSelected() { return this.selected; } }