/******************************************************************************* * 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; import java.awt.event.KeyEvent; import java.util.Hashtable; import org.osgi.service.component.ComponentContext; import org.osgi.service.component.annotations.Activate; import org.osgi.service.component.annotations.Deactivate; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.weasis.acquire.dockable.components.actions.calibrate.CalibrationPanel; import org.weasis.base.viewer2d.EventManager; import org.weasis.core.api.gui.Insertable; import org.weasis.core.api.gui.Insertable.Type; import org.weasis.core.api.gui.InsertableFactory; import org.weasis.core.api.gui.util.ActionW; import org.weasis.core.api.gui.util.BasicActionState; import org.weasis.core.api.gui.util.ComboItemListener; import org.weasis.core.ui.editor.image.MeasureToolBar; import org.weasis.core.ui.model.graphic.Graphic; /** * * @author Yannick LARVOR, Nicolas Roduit * @version 2.5.0 * @since v2.5.0 - 2016-04-06 - ylar - creation * */ @org.osgi.service.component.annotations.Component(service = InsertableFactory.class, immediate = false, property = { "org.weasis.base.viewer2d.View2dContainer=true" }) public class EditionToolFactory implements InsertableFactory { private static final Logger LOGGER = LoggerFactory.getLogger(EditionToolFactory.class); public static final ActionW EDITON = new ActionW("Edit", "draw.edition", KeyEvent.VK_G, 0, null) { //$NON-NLS-1$ //$NON-NLS-2$ @Override public boolean isDrawingAction() { return true; } }; // Starting cmd by "draw.sub." defines a drawing action with a derivative action public static final ActionW DRAW_EDITON = new ActionW("", ActionW.DRAW_CMD_PREFIX + EDITON.cmd(), 0, 0, null); //$NON-NLS-1$ private EditionTool toolPane = null; @Override public Type getType() { return Type.TOOL; } @Override public Insertable createInstance(Hashtable<String, Object> properties) { if (toolPane == null) { EventManager eventManager = EventManager.getInstance(); // Remove actions which are not useful eventManager.removeAction(ActionW.SCROLL_SERIES); eventManager.removeAction(ActionW.WINLEVEL); eventManager.removeAction(ActionW.WINDOW); eventManager.removeAction(ActionW.LEVEL); eventManager.removeAction(ActionW.ROTATION); eventManager.removeAction(ActionW.FLIP); eventManager.removeAction(ActionW.FILTER); eventManager.removeAction(ActionW.INVERSESTACK); eventManager.removeAction(ActionW.INVERT_LUT); eventManager.removeAction(ActionW.LUT); eventManager.removeAction(ActionW.LAYOUT); eventManager.removeAction(ActionW.SYNCH); eventManager.setAction(new BasicActionState(EDITON)); eventManager.setAction(new ComboItemListener<Graphic>(DRAW_EDITON, new Graphic[] { MeasureToolBar.selectionGraphic, CalibrationPanel.CALIBRATION_LINE_GRAPHIC }) { @Override public void itemStateChanged(Object object) { // Do nothing } }); toolPane = new EditionTool(getType()); } return toolPane; } @Override public void dispose(Insertable tool) { if (toolPane != null) { toolPane = null; } } @Override public boolean isComponentCreatedByThisFactory(Insertable tool) { return tool instanceof EditionTool; } // ================================================================================ // OSGI service implementation // ================================================================================ @Activate protected void activate(ComponentContext context) { LOGGER.info("Activate the TransformationTool panel"); //$NON-NLS-1$ } @Deactivate protected void deactivate(ComponentContext context) { LOGGER.info("Deactivate the TransformationTool panel"); //$NON-NLS-1$ } }