/******************************************************************************* * Copyright (c) 2004, 2010 BREDEX GmbH. * 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: * BREDEX GmbH - initial API and implementation and/or initial documentation *******************************************************************************/ package org.eclipse.jubula.client.ui.rcp.controllers.propertysources; import org.eclipse.jubula.client.core.businessprocess.IComponentNameCache; import org.eclipse.jubula.client.core.businessprocess.ProjectNameBP; import org.eclipse.jubula.client.core.model.IComponentNamePO; import org.eclipse.jubula.client.core.model.IProjectPO; import org.eclipse.jubula.client.core.persistence.GeneralStorage; import org.eclipse.jubula.client.core.persistence.ProjectPM; import org.eclipse.jubula.client.ui.constants.IconConstants; import org.eclipse.jubula.client.ui.rcp.Plugin; import org.eclipse.jubula.client.ui.rcp.controllers.propertydescriptors.JBPropertyDescriptor; import org.eclipse.jubula.client.ui.rcp.i18n.Messages; import org.eclipse.jubula.client.ui.rcp.provider.labelprovider.PropertyControllerLabelProvider; import org.eclipse.jubula.tools.internal.constants.StringConstants; import org.eclipse.jubula.tools.internal.exception.JBException; import org.eclipse.jubula.tools.internal.i18n.CompSystemI18n; import org.eclipse.swt.graphics.Image; /** * @author BREDEX GmbH * @created 21.04.2005 */ @SuppressWarnings("synthetic-access") public class OMLogicNameGUIPropertySource extends AbstractPropertySource<IComponentNamePO> { /** Property m_text on display */ public static final String P_ELEMENT_DISPLAY_COMPNAME = Messages.OMLogicNameGUIPropertySourceComponentName; /** Property m_text on display */ public static final String P_ELEMENT_DISPLAY_COMPTYPE = Messages.OMLogicNameGUIPropertySourceCompType; /** Label for parent project property */ public static final String P_ELEMENT_DISPLAY_PARENTPROJECT = Messages.OMLogicNameGUIPropertySourceParentProject; /** Constant for Category Component */ public static final String P_COMPONENT_CAT = Messages.OMLogicNameGUIPropertySourceComponent; /** * Constructor * * @param compName The Component Name from which properties are obtained. */ public OMLogicNameGUIPropertySource(IComponentNamePO compName) { super(compName); initPropDescriptor(); } /** * Inits the PropertyDescriptors */ protected void initPropDescriptor() { clearPropertyDescriptors(); JBPropertyDescriptor propDes = null; // Component Name propDes = new JBPropertyDescriptor( new ComponentNameController(), P_ELEMENT_DISPLAY_COMPNAME); propDes.setCategory(P_COMPONENT_CAT); propDes.setLabelProvider(new PropertyControllerLabelProvider()); addPropertyDescriptor(propDes); // Component Type propDes = new JBPropertyDescriptor( new ComponentTypeController(), P_ELEMENT_DISPLAY_COMPTYPE); propDes.setCategory(P_COMPONENT_CAT); propDes.setLabelProvider(new PropertyControllerLabelProvider()); addPropertyDescriptor(propDes); // Parent Project propDes = new JBPropertyDescriptor( new ParentProjectController(), P_ELEMENT_DISPLAY_PARENTPROJECT); propDes.setCategory(P_COMPONENT_CAT); propDes.setLabelProvider(new PropertyControllerLabelProvider()); addPropertyDescriptor(propDes); } /** * {@inheritDoc} */ public boolean isPropertySet(Object id) { boolean isPropSet = false; return isPropSet; } /** * Class to control component name. * @author BREDEX GmbH * @created 07.01.2005 */ private class ComponentNameController extends AbstractPropertyController { /** * {@inheritDoc} */ public boolean setProperty(Object value) { return true; } /** * {@inheritDoc} */ public Object getProperty() { IComponentNamePO compName = getNode(); IComponentNameCache compCache = Plugin.getActiveCompCache(); compName = compCache.getResCompNamePOByGuid(compName.getGuid()); if (compName != null && compName.getName() != null) { return compName.getName(); } return StringConstants.EMPTY; } /** * {@inheritDoc} */ public Image getImage() { return IconConstants.LOGICAL_NAME_IMAGE; } } /** * Class to control component name. * @author BREDEX GmbH * @created 07.01.2005 */ private class ComponentTypeController extends AbstractPropertyController { /** * {@inheritDoc} */ public boolean setProperty(Object value) { return true; } /** * {@inheritDoc} */ public Object getProperty() { IComponentNamePO compName = getNode(); IComponentNameCache compCache = Plugin.getActiveCompCache(); compName = compCache.getResCompNamePOByGuid(compName.getGuid()); if (compName != null && compName.getComponentType() != null) { return CompSystemI18n.getString( compName.getComponentType(), true); } return StringConstants.EMPTY; } /** * {@inheritDoc} */ public Image getImage() { return DEFAULT_IMAGE; } } /** * Class to control parent project. * @author BREDEX GmbH * @created 07.01.2005 */ private class ParentProjectController extends AbstractPropertyController { /** * {@inheritDoc} */ public boolean setProperty(Object value) { return true; } /** * {@inheritDoc} */ public Object getProperty() { IComponentNamePO compName = getNode(); Long parentProjectId = compName.getParentProjectId(); IProjectPO currentProject = GeneralStorage.getInstance() .getProject(); if (currentProject != null) { Long currentProjectId = currentProject.getId(); String parentProjectGuid = null; if (parentProjectId == null || parentProjectId.equals(currentProjectId)) { parentProjectGuid = currentProject.getGuid(); } else { try { parentProjectGuid = ProjectPM .getGuidOfProjectId(compName .getParentProjectId()); } catch (JBException e) { // No problem. We just won't be able to show the // parent project. } } if (parentProjectGuid != null) { return ProjectNameBP.getInstance().getName( parentProjectGuid); } } return Messages.OMLogicNameGUIPropertySourceUnknownParentProject; } /** * {@inheritDoc} */ public Image getImage() { return DEFAULT_IMAGE; } } }