// ============================================================================ // // Copyright (C) 2006-2016 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.dataprofiler.core.ui.editor; import java.util.ArrayList; import java.util.List; import org.eclipse.swt.layout.GridData; import org.eclipse.swt.widgets.Composite; import org.eclipse.ui.forms.editor.FormEditor; import org.eclipse.ui.forms.editor.FormPage; import org.eclipse.ui.forms.events.ExpansionAdapter; import org.eclipse.ui.forms.events.ExpansionEvent; import org.eclipse.ui.forms.widgets.ExpandableComposite; import org.eclipse.ui.forms.widgets.FormToolkit; import org.eclipse.ui.forms.widgets.ScrolledForm; import org.eclipse.ui.forms.widgets.Section; import org.eclipse.ui.part.FileEditorInput; import org.talend.core.model.properties.Property; import org.talend.dataprofiler.core.i18n.internal.DefaultMessagesImpl; import org.talend.dataprofiler.core.ui.pref.EditorPreferencePage; import org.talend.dataprofiler.core.ui.utils.TOPChartUtils; import org.talend.dq.helper.PropertyHelper; /** * DOC rli class global comment. Detailled comment */ public abstract class AbstractFormPage extends FormPage { protected boolean isDirty = false; protected FormToolkit toolkit; protected CommonFormEditor currentEditor; protected int foldingState; private int sectionCount = 0; private List<ExpandableComposite> expandCompositeList; public AbstractFormPage(FormEditor editor, String id, String title) { super(editor, id, title); this.toolkit = this.getEditor().getToolkit(); this.expandCompositeList = new ArrayList<ExpandableComposite>(); } /* * (non-Javadoc) * * @see org.eclipse.ui.forms.editor.FormPage#initialize(org.eclipse.ui.forms.editor.FormEditor) */ @Override public void initialize(FormEditor editor) { super.initialize(editor); initFoldingState(); } /** * DOC bZhou Comment method "createSection". * * @param form * @param parent * @param title * @return */ public Section createSection(final ScrolledForm form, Composite parent, String title) { return createSection(form, parent, title, null); } /** * DOC bZhou Comment method "createSection". * * @param form * @param parent * @param title * @param description * @return */ public Section createSection(final ScrolledForm form, Composite parent, String title, String description) { int style = Section.DESCRIPTION | Section.TWISTIE | Section.TITLE_BAR | Section.LEFT_TEXT_CLIENT_ALIGNMENT; if (description == null) { style = Section.TWISTIE | Section.TITLE_BAR | Section.LEFT_TEXT_CLIENT_ALIGNMENT; } Section section = toolkit.createSection(parent, style); section.setLayoutData(new GridData(GridData.FILL_HORIZONTAL | GridData.VERTICAL_ALIGN_BEGINNING)); section.addExpansionListener(new ExpansionAdapter() { @Override public void expansionStateChanged(ExpansionEvent e) { form.reflow(true); } }); section.setText(title); section.setDescription(description); section.setExpanded(getExpandedStatus(title)); registerSection(section); sectionCount++; return section; } /** * get the section's Expanded Status. * * @param sectionTitle * @return */ public boolean getExpandedStatus(String sectionTitle) { // 1:Unfold all sections, 2:Fold all sections, 3:Unfold first section,4:Select sections to fold if (foldingState == 1) { return true; } else if (foldingState == 2) { return false; } else if (foldingState == 3) { return sectionCount == 0; } else if (foldingState == 4) { if (sectionTitle.equalsIgnoreCase(DefaultMessagesImpl.getString("ColumnMasterDetailsPage.analysisMeta"))) { //$NON-NLS-1$ return EditorPreferencePage.isUnfoldAnalysisMetadata(); } else if (sectionTitle.equalsIgnoreCase(DefaultMessagesImpl.getString("ColumnMasterDetailsPage.dataPreview"))) { //$NON-NLS-1$ return EditorPreferencePage.isUnfoldDataPreview(); } else if (sectionTitle.equalsIgnoreCase(DefaultMessagesImpl.getString("ColumnMasterDetailsPage.analyzeColumn")) //$NON-NLS-1$ || sectionTitle .equalsIgnoreCase(DefaultMessagesImpl.getString("FunctionalDependencyMasterDetailsPage.Title")) //$NON-NLS-1$ || sectionTitle.equalsIgnoreCase(DefaultMessagesImpl.getString("TableMasterDetailsPage.analyzeTable")) //$NON-NLS-1$ || sectionTitle.equalsIgnoreCase(DefaultMessagesImpl .getString("ColumnsComparisonMasterDetailsPage.analyzedColumnSets"))) { //$NON-NLS-1$ return EditorPreferencePage.isUnfoldAnalyzedItems(); } else if (sectionTitle.equalsIgnoreCase(DefaultMessagesImpl.getString("ColumnMasterDetailsPage.dataFilter"))) { //$NON-NLS-1$ return EditorPreferencePage.isUnfoldDataFilter(); } else if (sectionTitle.equalsIgnoreCase(DefaultMessagesImpl.getString("ColumnMasterDetailsPage.AnalysisParameter"))) { //$NON-NLS-1$ return EditorPreferencePage.isUnfoldAnalysisParameters(); } else if (sectionTitle.equalsIgnoreCase(DefaultMessagesImpl .getString("AbstractMetadataFormPage.contextGroupSettingsSection"))) { //$NON-NLS-1$ return EditorPreferencePage.isUnfoldContextGroupSettings(); } } return true; } /** * DOC bZhou Comment method "initFoldingState". */ private void initFoldingState() { foldingState = EditorPreferencePage.getCurrentFolding(); } /** * DOC bZhou Comment method "registerSection". * * @param composite */ public void registerSection(ExpandableComposite composite) { expandCompositeList.add(composite); currentEditor.getToolBar().getEditorBarWrap().addExpandableComposite(composite); } /** * Getter for expandCompositeList. * * @return the expandCompositeList */ public List<ExpandableComposite> getExpandCompositeList() { return expandCompositeList; } @Override public boolean isDirty() { return super.isDirty() || isDirty; } protected Property getProperty() { Property property = null; if (getEditorInput() instanceof AbstractItemEditorInput) { AbstractItemEditorInput editorInput = (AbstractItemEditorInput) getEditorInput(); if (editorInput.getItem() != null) { property = editorInput.getItem().getProperty(); } } else if (getEditorInput() instanceof FileEditorInput) { FileEditorInput editorInput = (FileEditorInput) getEditorInput(); property = PropertyHelper.getProperty(editorInput.getFile()); } return property; } /** * DOC bZhou Comment method "setDirty". * * @param isDirty */ public abstract void setDirty(boolean isDirty); protected boolean canShowGraphicsSectionForSettingsPage() { return (!EditorPreferencePage.isHideGraphicsSectionForSettingsPage() && TOPChartUtils.getInstance().isTOPChartInstalled()); } /** * Added TDQ-9797 if show the chart or not */ protected boolean canShowChartForResultPage() { return (!EditorPreferencePage.isHideGraphicsForResultPage() && TOPChartUtils.getInstance().isTOPChartInstalled()); } }