/* * Copyright 2012 PRODYNA AG * * Licensed under the Eclipse Public License (EPL), Version 1.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.opensource.org/licenses/eclipse-1.0.php or * http://www.nabucco.org/License.html * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.nabucco.testautomation.schema.ui.rcp.multipage.maintenance; import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeListener; import java.io.Serializable; import java.util.Map; import org.eclipse.jface.action.ToolBarManager; import org.eclipse.swt.widgets.ToolBar; import org.eclipse.swt.widgets.ToolItem; import org.nabucco.framework.base.facade.datatype.DatatypeState; import org.nabucco.framework.base.facade.datatype.utils.I18N; import org.nabucco.framework.plugin.base.component.multipage.masterdetail.MasterDetailBlock; import org.nabucco.framework.plugin.base.component.multipage.masterdetail.MasterDetailHelper; import org.nabucco.framework.plugin.base.component.multipage.view.MultiPageEditView; import org.nabucco.framework.plugin.base.component.multipage.xml.XMLEditorPage; import org.nabucco.framework.plugin.base.component.multipage.xml.example.XmlDefaultPage; import org.nabucco.testautomation.schema.ui.rcp.multipage.maintenance.masterdetails.SchemaMaintenanceMasterDetailBlock; import org.nabucco.testautomation.schema.ui.rcp.multipage.maintenance.model.SchemaMaintenanceMultiplePageEditViewModel; /** * SchemaMaintenanceMultiplePageEditView * * @author Markus Jorroch, PRODYNA AG */ public class SchemaMaintenanceMultiplePageEditView extends MultiPageEditView<SchemaMaintenanceMultiplePageEditViewModel> { private static final String TOOLTIP_EXECUTE = "Execute"; private static final String TOOLTIP_DELETE = "Delete"; private static final String TOOLTIP_SAVE = "Save"; private static final String TOOLTIP_IMPORT = "Import"; private static final String TOOLTIP_RELOAD = "Reload"; public static final String ID = "org.nabucco.testautomation.schema.ui.rcp.multipage.maintenance.SchemaMaintenanceMultiplePageEditView"; public static final String TITLE = ID + ".title"; public static final String TAB_TITLE = ID + ".tabTitle"; private SchemaMaintenanceMasterDetailBlock schemaMaintenanceMasterDetailBlock; public SchemaMaintenanceMultiplePageEditView() { this.model = new SchemaMaintenanceMultiplePageEditViewModel(); } @Override protected String getManagedFormTitle() { return I18N.i18n(TITLE, getValues()); } @Override public MasterDetailBlock<SchemaMaintenanceMultiplePageEditViewModel> getMasterDetailsBlock() { if (this.schemaMaintenanceMasterDetailBlock == null) { this.schemaMaintenanceMasterDetailBlock = new SchemaMaintenanceMasterDetailBlock(this.model, getMessageManager(), this); } return this.schemaMaintenanceMasterDetailBlock; } @Override public void postOpen() { // Activate or deactivate Reload Button refreshReloadButtonState(); super.model.addPropertyChangeListener("datatype", new PropertyChangeListener() { @Override public void propertyChange(PropertyChangeEvent evt) { refreshReloadButtonState(); } }); } private void refreshReloadButtonState() { // TODO Develop general concept in plugin.base final ToolBar toolBar = ((ToolBarManager) getToolBarManager()).getControl(); ToolItem reloadItem = null; ToolItem importItem = null; ToolItem saveItem = null; ToolItem deleteItem = null; ToolItem executeItem = null; for (ToolItem item : toolBar.getItems()) { if (item.getToolTipText() != null) { if (item.getToolTipText().equals(TOOLTIP_RELOAD)) { reloadItem = item; } else if (item.getToolTipText().equals(TOOLTIP_IMPORT)) { importItem = item; } else if (item.getToolTipText().equals(TOOLTIP_SAVE)) { saveItem = item; } else if (item.getToolTipText().equals(TOOLTIP_DELETE)) { deleteItem = item; } else if (item.getToolTipText().equals(TOOLTIP_EXECUTE)) { executeItem = item; } } } if (reloadItem != null) { if (super.getModel().getSchemaConfig().getDatatypeState() == DatatypeState.INITIALIZED || !MasterDetailHelper.isDatatypeEditable(super.getModel().getSchemaConfig())) { reloadItem.setEnabled(false); } else { reloadItem.setEnabled(true); } } if (importItem != null) { if (MasterDetailHelper.isImportPossible(super.getModel().getSchemaConfig())) { importItem.setEnabled(true); } else { importItem.setEnabled(false); } } if (saveItem != null) { if (MasterDetailHelper.isDatatypeEditable(super.getModel().getSchemaConfig())) { saveItem.setEnabled(true); } else { saveItem.setEnabled(false); } } if (deleteItem != null) { if (MasterDetailHelper.isDatatypeEditable(super.getModel().getSchemaConfig())) { deleteItem.setEnabled(true); } else { deleteItem.setEnabled(false); } } if (executeItem != null) { if (MasterDetailHelper.isDatatypeEditable(super.getModel().getSchemaConfig())) { executeItem.setEnabled(true); } else { executeItem.setEnabled(false); } } } @Override public XMLEditorPage<SchemaMaintenanceMultiplePageEditViewModel> getXMLPage() { return new XmlDefaultPage<SchemaMaintenanceMultiplePageEditViewModel>(); } public Map<String, Serializable> getValues() { return this.model.getValues(); } @Override public String getNewPartName() { return I18N.i18n(TAB_TITLE, getValues()); } @Override public String getId() { return ID; } }