// ============================================================================ // // Copyright (C) 2006-2012 Talend Inc. - www.talend.com // // This source code is available under agreement available at // %InstallDIR%\features\org.talend.rcp.branding.%PRODUCTNAME%\%PRODUCTNAME%license.txt // // You should have received a copy of the agreement // along with this program; if not, write to Talend SA // 9 rue Pages 92150 Suresnes, France // // ============================================================================ package org.talend.repository.ui.properties; import java.util.ArrayList; import java.util.List; import org.eclipse.jface.viewers.ISelection; import org.eclipse.swt.SWT; import org.eclipse.swt.custom.CCombo; import org.eclipse.swt.custom.CLabel; import org.eclipse.swt.layout.FormAttachment; import org.eclipse.swt.layout.FormData; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Text; import org.eclipse.ui.IWorkbenchPart; import org.eclipse.ui.views.properties.tabbed.ITabbedPropertyConstants; import org.eclipse.ui.views.properties.tabbed.TabbedPropertySheetPage; import org.talend.commons.exception.PersistenceException; import org.talend.commons.ui.runtime.exception.ExceptionHandler; import org.talend.core.model.properties.Property; import org.talend.core.model.properties.Status; import org.talend.repository.i18n.Messages; /** * DOC mhelleboid class global comment. Detailled comment <br/> * * $Id: PurposeStatusSection.java 77219 2012-01-24 01:14:15Z mhirt $ * */ public class PurposeStatusSection extends AbstractSection { private Text purposeText; private StatusHelper statusHelper = new StatusHelper(getRepositoryFactory()); private CCombo statusText; @Override public void createControls(Composite parent, TabbedPropertySheetPage aTabbedPropertySheetPage) { super.createControls(parent, aTabbedPropertySheetPage); Composite composite = getWidgetFactory().createFlatFormComposite(parent); FormData data; purposeText = getWidgetFactory().createText(composite, ""); //$NON-NLS-1$ data = new FormData(); data.left = new FormAttachment(0, STANDARD_LABEL_WIDTH); data.right = new FormAttachment(70, 0); data.top = new FormAttachment(0, ITabbedPropertyConstants.VSPACE); purposeText.setLayoutData(data); addFocusListener(purposeText); CLabel purposeLabel = getWidgetFactory().createCLabel(composite, Messages.getString("PurposeStatusSection.purposeLabel")); //$NON-NLS-1$ data = new FormData(); data.left = new FormAttachment(0, 0); data.right = new FormAttachment(purposeText, -ITabbedPropertyConstants.HSPACE); data.top = new FormAttachment(purposeText, 0, SWT.CENTER); purposeLabel.setLayoutData(data); statusText = getWidgetFactory().createCCombo(composite, SWT.READ_ONLY | SWT.BORDER); //$NON-NLS-1$ data = new FormData(); data.left = new FormAttachment(purposeText, STANDARD_LABEL_WIDTH); data.right = new FormAttachment(100, 0); data.top = new FormAttachment(0, ITabbedPropertyConstants.VSPACE); statusText.setLayoutData(data); addFocusListener(statusText); // addComboFieldListeners(statusText, new ModifyListener() { // public void modifyText(ModifyEvent e) { // if (enableListener) // needSave = true; // }}, true); CLabel statusLabel = getWidgetFactory().createCLabel(composite, Messages.getString("PurposeStatusSection.statusLabel")); //$NON-NLS-1$ data = new FormData(); data.left = new FormAttachment(purposeText, ITabbedPropertyConstants.HSPACE * 3); data.right = new FormAttachment(statusText, -ITabbedPropertyConstants.HSPACE); data.top = new FormAttachment(statusText, 0, SWT.CENTER); statusLabel.setLayoutData(data); addFocusListenerToChildren(composite); } @Override public void setInput(IWorkbenchPart part, ISelection selection) { super.setInput(part, selection); try { Property property = getObject().getProperty(); List<Status> status = property == null ? new ArrayList<Status>() : statusHelper.getStatusList(property); statusText.setItems(toArray(status)); } catch (PersistenceException e) { // e.printStackTrace(); ExceptionHandler.process(e); } } public static String[] toArray(List<Status> status) { String[] res = new String[status.size()]; int i = 0; for (Status s : status) { res[i++] = s.getLabel(); } return res; } @Override public void refresh() { purposeText.setText(getPurpose() != null ? getPurpose().toString() : ""); //$NON-NLS-1$ // enableListener = false; statusText.setText(getStatus() != null ? getStatus().toString() : ""); //$NON-NLS-1$ // enableListener = true; } protected String getPurpose() { return getObject().getPurpose(); } protected String getStatus() { String statusCode = getObject().getStatusCode(); if (statusCode == null || "".equals(statusCode)) { //$NON-NLS-1$ return ""; //$NON-NLS-1$ } return statusHelper.getStatusLabel(statusCode); } @Override protected void beforeSave() { // String text = purposeText.getText(); // if (!text.equals(getObject().getPurpose())) { // getObject().setPurpose(text); // } // text = statusHelper.getStatusCode(statusText.getText()); // if (!text.equals(getObject().getStatusCode())) { // getObject().setStatusCode(text); // } } @Override protected void enableControl(boolean enable) { purposeText.setEnabled(enable); statusText.setEnabled(enable); } @Override protected void showControl(boolean visible) { purposeText.getParent().setVisible(visible); } }