//------------------------------------------------------------------------------ // Copyright (c) 2005, 2006 IBM Corporation 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: // IBM Corporation - initial implementation //------------------------------------------------------------------------------ package org.eclipse.epf.authoring.ui.forms; import java.text.MessageFormat; import java.util.ArrayList; import java.util.Iterator; import org.eclipse.emf.edit.ui.provider.AdapterFactoryContentProvider; import org.eclipse.epf.authoring.ui.AuthoringUIImages; import org.eclipse.epf.authoring.ui.AuthoringUIPlugin; import org.eclipse.epf.authoring.ui.AuthoringUIResources; import org.eclipse.epf.authoring.ui.AuthoringUIText; import org.eclipse.epf.authoring.ui.dialogs.SectionsOrderDialog; import org.eclipse.epf.authoring.ui.editors.MethodElementEditor; import org.eclipse.epf.authoring.ui.editors.MethodElementEditorInput; import org.eclipse.epf.authoring.ui.editors.MethodElementEditor.ModifyListener; import org.eclipse.epf.authoring.ui.providers.VariabilityElementLabelProvider; import org.eclipse.epf.authoring.ui.richtext.IMethodRichText; import org.eclipse.epf.authoring.ui.richtext.IMethodRichTextEditor; import org.eclipse.epf.authoring.ui.util.EditorsContextHelper; import org.eclipse.epf.authoring.ui.util.UIHelper; import org.eclipse.epf.common.utils.StrUtil; import org.eclipse.epf.library.ILibraryManager; import org.eclipse.epf.library.LibraryService; import org.eclipse.epf.library.edit.TngAdapterFactory; import org.eclipse.epf.library.edit.command.AddToSectionListCommand; import org.eclipse.epf.library.edit.command.IActionManager; import org.eclipse.epf.library.edit.command.MoveInSectionListCommand; import org.eclipse.epf.library.edit.command.RemoveFromSectionList; import org.eclipse.epf.library.edit.util.SectionList; import org.eclipse.epf.library.edit.util.TngUtil; import org.eclipse.epf.library.events.ILibraryChangeListener; import org.eclipse.epf.library.ui.LibraryUIText; import org.eclipse.epf.richtext.RichTextListener; import org.eclipse.epf.uma.Checklist; import org.eclipse.epf.uma.UmaFactory; import org.eclipse.epf.uma.UmaPackage; import org.eclipse.jface.dialogs.Dialog; import org.eclipse.jface.viewers.ILabelProvider; import org.eclipse.jface.viewers.ISelectionChangedListener; import org.eclipse.jface.viewers.IStructuredContentProvider; import org.eclipse.jface.viewers.IStructuredSelection; import org.eclipse.jface.viewers.SelectionChangedEvent; import org.eclipse.jface.viewers.StructuredSelection; import org.eclipse.jface.viewers.TableViewer; import org.eclipse.swt.SWT; import org.eclipse.swt.events.ControlEvent; import org.eclipse.swt.events.ControlListener; import org.eclipse.swt.events.FocusAdapter; import org.eclipse.swt.events.FocusEvent; import org.eclipse.swt.events.SelectionAdapter; import org.eclipse.swt.events.SelectionEvent; import org.eclipse.swt.layout.GridData; import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.widgets.Button; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Display; import org.eclipse.swt.widgets.Event; import org.eclipse.swt.widgets.Label; import org.eclipse.swt.widgets.Listener; import org.eclipse.swt.widgets.Table; import org.eclipse.swt.widgets.Text; import org.eclipse.ui.IEditorInput; import org.eclipse.ui.IEditorSite; import org.eclipse.ui.ISharedImages; import org.eclipse.ui.PlatformUI; import org.eclipse.ui.forms.IManagedForm; import org.eclipse.ui.forms.editor.FormEditor; import org.eclipse.ui.forms.events.HyperlinkAdapter; import org.eclipse.ui.forms.events.HyperlinkEvent; import org.eclipse.ui.forms.widgets.ImageHyperlink; import org.eclipse.ui.forms.widgets.Section; import org.eclipse.ui.forms.widgets.TableWrapData; import org.eclipse.ui.forms.widgets.TableWrapLayout; /** * The Check Item page in the Checklist editor. * * @author Shashidhar Kannoori * @author Kelvin Low * @author Shilpa Toraskar * @since 1.0 */ public class ChecklistItemsPage extends BaseFormPage { private static final String FORM_PAGE_ID = "checklistCheckItemsPage"; //$NON-NLS-1$ private Text ctrl_name; private Button ctrl_add, ctrl_delete, ctrl_up, ctrl_down, ctrl_order; private Table ctrl_checkItems; private TableViewer checkItemsTableViewer; private SectionList allcheckItems; private IMethodRichText activeControl; private boolean descExpandFlag = false; private IMethodRichTextEditor ctrl_expanded; private ImageHyperlink expandLink; private Label expandLabel; protected Section formSection; private Section generalSection; protected Composite sectionComposite; private Composite generalComposite; private Composite expandedComposite; private IMethodRichText ctrl_maindesc; private IStructuredContentProvider checkItemsViewerContentProvider; private ILabelProvider checkItemsViewerLabelProvider; private Checklist checklist; private org.eclipse.epf.uma.Section currentItem; private ILibraryChangeListener libListener = null; private ModifyListener contentModifyListener; private IActionManager actionMgr; /** * Creates a new instance. */ public ChecklistItemsPage(FormEditor editor) { super(editor, FORM_PAGE_ID, AuthoringUIText.CHECK_ITEMS_TEXT); } /** * @see org.eclipse.epf.authoring.ui.forms.BaseFormPage#init(org.eclipse.ui.IEditorSite, org.eclipse.ui.IEditorInput) */ public void init(IEditorSite site, IEditorInput input) { super.init(site, input); MethodElementEditorInput methodElementInput = (MethodElementEditorInput) input; checklist = (Checklist) methodElementInput.getMethodElement(); } /** * Create form content */ protected void createFormContent(IManagedForm managedForm) { super.createFormContent(managedForm); String elementLabel = LibraryUIText.getUIText(methodElement); form.setText(LibraryUIText.TEXT_GUIDANCE + " (" + elementLabel + "): " + methodElement.getName()); //$NON-NLS-1$ //$NON-NLS-2$ formSection = toolkit.createSection(form.getBody(), Section.NO_TITLE); { TableWrapData td = new TableWrapData(TableWrapData.FILL_GRAB); formSection.setLayoutData(td); formSection.setLayout(new TableWrapLayout()); } // Create the composite for the sections. sectionComposite = toolkit.createComposite(formSection, SWT.NONE); sectionComposite.setLayoutData(new TableWrapData(TableWrapData.FILL_GRAB)); sectionComposite.setLayout(new TableWrapLayout()); formSection.setClient(sectionComposite); // Create the General Information section. generalSection = toolkit.createSection(sectionComposite, Section.TITLE_BAR | Section.DESCRIPTION | Section.TWISTIE | Section.EXPANDED); generalSection .setLayoutData(new TableWrapData(TableWrapData.FILL_GRAB)); generalSection.setText(AuthoringUIText.CHECK_ITEMS_SECTION_NAME); generalSection.setDescription(AuthoringUIText.CHECK_ITEMS_SECTION_DESC); generalSection.setLayout(new GridLayout()); generalComposite = toolkit.createComposite(generalSection); generalComposite.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); generalComposite.setLayout(new GridLayout(4, false)); generalSection.setClient(generalComposite); EditorsContextHelper.setHelp(generalComposite.getParent(), checklist); Composite pane1 = toolkit.createComposite(generalComposite); { GridData gridData = new GridData(GridData.FILL_BOTH); gridData.verticalSpan = 1; gridData.horizontalSpan = 3; pane1.setLayoutData(gridData); pane1.setLayout(new GridLayout()); } Label l_name = toolkit.createLabel(pane1, AuthoringUIText.CHECK_ITEMS_TEXT); { GridData gridData = new GridData(GridData.BEGINNING); gridData.horizontalSpan = 3; l_name.setLayoutData(gridData); } ctrl_checkItems = toolkit.createTable(pane1, SWT.MULTI); { GridData gridData = new GridData(GridData.FILL_BOTH); gridData.horizontalSpan = 3; gridData.heightHint = 150; ctrl_checkItems.setLayoutData(gridData); } initProviders(); checkItemsTableViewer = new TableViewer(ctrl_checkItems); checkItemsTableViewer .setContentProvider(checkItemsViewerContentProvider); checkItemsTableViewer.setLabelProvider(checkItemsViewerLabelProvider); Composite pane2 = toolkit.createComposite(generalComposite); pane2.setLayoutData(new GridData(GridData.VERTICAL_ALIGN_CENTER | GridData.HORIZONTAL_ALIGN_CENTER)); pane2.setLayout(new GridLayout()); ctrl_add = toolkit.createButton(pane2, AuthoringUIText.ADD_BUTTON_TEXT, SWT.NONE); ctrl_add.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); ctrl_delete = toolkit.createButton(pane2, AuthoringUIText.DELETE_BUTTON_TEXT, SWT.NONE); ctrl_delete.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); ctrl_delete.setEnabled(false); ctrl_up = toolkit.createButton(pane2, AuthoringUIText.UP_BUTTON_TEXT, SWT.NONE); ctrl_up.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); ctrl_up.setEnabled(false); ctrl_down = toolkit.createButton(pane2, AuthoringUIText.DOWN_BUTTON_TEXT, SWT.NONE); ctrl_down.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); ctrl_down.setEnabled(false); ctrl_order = toolkit.createButton(pane2, AuthoringUIText.ORDER_BUTTON_TEXT, SWT.NONE); ctrl_order.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); // name Label nameLabel = toolkit.createLabel(generalComposite, AuthoringUIText.NAME_TEXT); { GridData gridData = new GridData(GridData.BEGINNING); gridData.horizontalSpan = 4; nameLabel.setLayoutData(gridData); } ctrl_name = toolkit.createText(generalComposite, "", SWT.SINGLE); //$NON-NLS-1$ { GridData gridData = new GridData(GridData.FILL_HORIZONTAL); gridData.horizontalSpan = 4; ctrl_name.setLayoutData(gridData); } createBlankLabel(toolkit, generalComposite, 4); ctrl_maindesc = createRichTextEditWithLink( toolkit, generalComposite, AuthoringUIText.DESCRIPTION_TEXT, 250, 300, 4); createRichTextEditorSection(); toolkit.paintBordersFor(pane1); toolkit.paintBordersFor(pane2); toolkit.paintBordersFor(generalComposite); toolkit.paintBordersFor(expandedComposite); actionMgr = ((MethodElementEditor) getEditor()).getActionManager(); addListeners(); loadData(); enableControls(); } /** * Add library and selection listener */ public void addListeners() { final MethodElementEditor editor = (MethodElementEditor) getEditor(); contentModifyListener = editor.createModifyListener(currentItem); ctrl_name.addModifyListener(contentModifyListener); ((MethodElementEditor.ModifyListener) contentModifyListener) .setDisable(true); form.addListener(SWT.Activate, new Listener() { public void handleEvent(Event e) { // IStatus status = TngUtil.checkEdit((EObject) checklist, // getSite().getShell()); // if (status.isOK()) { // loadData(); // } if (form != null && !form.isDisposed()) { UIHelper.setFormText(form, contentElement); } // loadData(); if (TngUtil.isLocked(contentElement)) { enableControls(false); } else { ctrl_add.setEnabled(true); // checkSelection(); } } }); form.addListener(SWT.Deactivate, new Listener() { public void handleEvent(Event e) { deactivate(); } }); form.addControlListener(new ControlListener() { public void controlResized(ControlEvent e) { if (ctrl_expanded != null) { ((GridData) ctrl_expanded.getLayoutData()).heightHint = getRichTextEditorHeight(); ((GridData) ctrl_expanded.getLayoutData()).widthHint = getRichTextEditorWidth(); } formSection.layout(true, true); } public void controlMoved(ControlEvent e) { } }); ctrl_name.addModifyListener(contentModifyListener); ctrl_name.addFocusListener(new FocusAdapter() { public void focusLost(FocusEvent e) { if (currentItem != null) { String oldName = currentItem.getName(); String newName = ctrl_name.getText(); //newName = StrUtil.makeValidFileName(newName); if (ctrl_name.getText() == null || ctrl_name.getText().length() == 0) { String title = AuthoringUIResources.bind(AuthoringUIResources.renameDialog_title, LibraryUIText.TEXT_CHECK_ITEM); String msg = AuthoringUIResources.bind(AuthoringUIResources.emptyElementNameError_msg, StrUtil.toLower(LibraryUIText.TEXT_CHECK_ITEM)); if (oldName != null && oldName.length() > 0) { AuthoringUIPlugin.getDefault().getMsgDialog() .displayError(title, msg); } else { getEditorSite() .getActionBars() .getStatusLineManager() .setErrorMessage( PlatformUI .getWorkbench() .getSharedImages() .getImage( ISharedImages.IMG_OBJS_ERROR_TSK), msg); } } else if (!oldName.equals(newName)) { editor.getActionManager().doAction(IActionManager.SET, currentItem, UmaPackage.eINSTANCE.getNamedElement_Name(), newName, -1); } } } }); ctrl_maindesc.addModifyListener(contentModifyListener); ctrl_maindesc.addListener(SWT.Deactivate, new Listener() { public void handleEvent(Event e) { saveMainDescription(); } }); checkItemsTableViewer .addSelectionChangedListener(new ISelectionChangedListener() { public void selectionChanged(SelectionChangedEvent event) { checkSelection(); } }); ctrl_add.addSelectionListener(new SelectionAdapter() { public void widgetSelected(SelectionEvent e) { org.eclipse.epf.uma.Section child = UmaFactory.eINSTANCE .createSection(); String newName = MessageFormat.format( AuthoringUIText.NEW_ELEMENT_TEXT, new String[] { LibraryUIText.TEXT_CHECK_ITEM }); child.setName(newName); AddToSectionListCommand cmd = new AddToSectionListCommand( checklist, child, allcheckItems); getActionManager().execute(cmd); checkItemsTableViewer.refresh(); checkItemsTableViewer.setSelection(new StructuredSelection( child)); ctrl_name.setFocus(); ctrl_name.setSelection(0, newName.length()); getEditorSite().getActionBars().getStatusLineManager() .setErrorMessage(""); //$NON-NLS-1$ } }); ctrl_delete.addSelectionListener(new SelectionAdapter() { public void widgetSelected(SelectionEvent e) { getEditorSite().getActionBars().getStatusLineManager() .setErrorMessage(""); //$NON-NLS-1$ IStructuredSelection selection = (IStructuredSelection) checkItemsTableViewer .getSelection(); for (Iterator iter = selection.toList().iterator(); iter .hasNext();) { Object o = iter.next(); if (o instanceof org.eclipse.epf.uma.Section) { RemoveFromSectionList cmd = new RemoveFromSectionList( checklist, (org.eclipse.epf.uma.Section) o, allcheckItems); getActionManager().execute(cmd); } } checkItemsTableViewer.refresh(); editItem(null); } }); ctrl_up.addSelectionListener(new SelectionAdapter() { public void widgetSelected(SelectionEvent e) { IStructuredSelection selection = (IStructuredSelection) checkItemsTableViewer .getSelection(); ArrayList moveUpItems = new ArrayList(); moveUpItems.addAll(selection.toList()); MoveInSectionListCommand cmd = new MoveInSectionListCommand( checklist, moveUpItems, allcheckItems, 1); getActionManager().execute(cmd); checkItemsTableViewer.refresh(); if (checkItemsTableViewer.getTable().getSelectionIndex() > 0 && !TngUtil.isLocked(checklist)) { ctrl_up.setEnabled(true); } else { ctrl_up.setEnabled(false); } if (checkItemsTableViewer.getTable().getSelectionIndex() < checkItemsTableViewer .getTable().getItemCount() - 1 && !TngUtil.isLocked(checklist)) { ctrl_down.setEnabled(true); } else { ctrl_down.setEnabled(false); } } }); ctrl_down.addSelectionListener(new SelectionAdapter() { public void widgetSelected(SelectionEvent e) { IStructuredSelection selection = (IStructuredSelection) checkItemsTableViewer .getSelection(); ArrayList moveDownItems = new ArrayList(); moveDownItems.addAll(selection.toList()); MoveInSectionListCommand cmd = new MoveInSectionListCommand( checklist, moveDownItems, allcheckItems, 0); getActionManager().execute(cmd); checkItemsTableViewer.refresh(); if (checkItemsTableViewer.getTable().getSelectionIndex() > 0 && !TngUtil.isLocked(checklist)) { ctrl_up.setEnabled(true); } else { ctrl_up.setEnabled(false); } if (checkItemsTableViewer.getTable().getSelectionIndex() < checkItemsTableViewer .getTable().getItemCount() - 1 && !TngUtil.isLocked(checklist)) { ctrl_down.setEnabled(true); } else { ctrl_down.setEnabled(false); } } }); ctrl_order.addSelectionListener(new SelectionAdapter() { public void widgetSelected(SelectionEvent e) { SectionsOrderDialog dlg = new SectionsOrderDialog( Display.getCurrent().getActiveShell(), checklist, getActionManager(), AuthoringUIResources.ChecklistOrder_title, AuthoringUIResources.ChecklistOrder_description, AuthoringUIResources.ChecklistOrder_checklistitems_text); boolean isDirty = getEditor().isDirty(); int rtnValue = dlg.open(); if(!isDirty && rtnValue == Dialog.CANCEL && getEditor().isDirty()){ getEditor().doSave(null); } } }); } protected void enableControls(boolean editable) { ctrl_name.setEditable(editable); ctrl_maindesc.setEditable(editable); ctrl_add.setEnabled(editable); ctrl_delete.setEnabled(editable); ctrl_up.setEnabled(editable); ctrl_down.setEnabled(editable); ctrl_order.setEnabled(true); if (ctrl_expanded != null) { ctrl_expanded.setEditable(editable); } } protected void deactivate() { // Save the Item order. if (allcheckItems != null) { allcheckItems.apply(); } } /** * Initializes the controls with data from the model. */ private void loadData() { allcheckItems = null; checkItemsTableViewer.setInput(checklist); checkItemsTableViewer.refresh(); editItem(currentItem); } /** * Edit current Item. */ private void editItem(org.eclipse.epf.uma.Section item) { ((MethodElementEditor.ModifyListener) contentModifyListener) .setDisable(true); if (ctrl_maindesc.getModified()) { saveMainDescription(); } currentItem = item; String name = ""; //$NON-NLS-1$ String desc = ""; //$NON-NLS-1$ if (currentItem != null) { name = currentItem.getName(); desc = currentItem.getSectionDescription(); ctrl_name.setFocus(); getEditorSite().getActionBars().getStatusLineManager() .setErrorMessage(""); //$NON-NLS-1$ } ctrl_name.setText(name == null ? "" : name); //$NON-NLS-1$ ctrl_maindesc.setText(desc == null ? "" : desc); //$NON-NLS-1$ ctrl_maindesc.setModalObject(currentItem); ctrl_maindesc.setModalObjectFeature(UmaPackage.eINSTANCE .getSection_SectionDescription()); if (item == null) { // close any Find/Replace dialog open in the RTE ctrl_maindesc.getFindReplaceAction().dispose(); } ((MethodElementEditor.ModifyListener) contentModifyListener) .setElement(currentItem); ((MethodElementEditor.ModifyListener) contentModifyListener) .setDisable(currentItem == null); enableControls(); } /** * Enable name and description controls */ private void enableControls() { if (checklist.getPresentation().getSections().contains(currentItem)) { if (!TngUtil.isLocked(contentElement)) { ctrl_name.setEditable(true); ctrl_maindesc.setEditable(true); } } else { ctrl_name.setEditable(false); ctrl_maindesc.setEditable(false); } } /** * Dispose listener * @see org.eclipse.ui.forms.editor.FormPage#dispose() */ public void dispose() { if (libListener != null) { ILibraryManager manager = LibraryService.getInstance().getCurrentLibraryManager(); if (manager != null) { manager.removeListener(libListener); } libListener = null; } } private void createRichTextEditorSection() { expandedComposite = toolkit.createComposite(formSection, SWT.NONE); expandedComposite.setLayoutData(new TableWrapData(TableWrapData.FILL_GRAB)); expandedComposite.setLayout(new GridLayout(2, false)); expandedComposite.setVisible(false); // Hyperlink desc expandLink = toolkit.createImageHyperlink(expandedComposite, SWT.NONE); expandLink.setImage(AuthoringUIImages.IMG_EXPANDED); expandLink.setToolTipText(AuthoringUIResources.closeRTE); expandLink.setUnderlined(false); expandLink.addHyperlinkListener(new HyperlinkAdapter() { public void linkActivated(HyperlinkEvent e) { toggle(e); } }); expandLabel = createDecoratedLabel(toolkit, expandedComposite, ""); //$NON-NLS-1$ } /** * Toggle Description control to expand and control state * * @see org.eclipse.epf.authoring.ui.forms.BaseFormPage#toggle(org.eclipse.ui.forms.events.HyperlinkEvent) */ protected void toggle(HyperlinkEvent e) { if (currentItem == null) return; if (ctrl_expanded == null) { ctrl_expanded = createRichTextEditor(toolkit, expandedComposite, SWT.MULTI | SWT.WRAP | SWT.V_SCROLL, GridData.FILL_BOTH, getRichTextEditorHeight(), getRichTextEditorWidth(), 2, expandLabel); ctrl_expanded.addModifyListener(contentModifyListener); } if (descExpandFlag) { ctrl_expanded.collapse(); sectionComposite.setVisible(true); expandedComposite.setVisible(false); formSection.setClient(sectionComposite); IMethodRichText richText = getActiveRichTextControl(); richText.setText(ctrl_expanded.getText()); for (Iterator i = richText.getListeners(); i.hasNext();) { RichTextListener listener = (RichTextListener) i.next(); ctrl_expanded.removeListener(listener.getEventType(), listener .getListener()); } if (ctrl_expanded.getModified()) { ((MethodElementEditor) getEditor()) .saveModifiedRichText(ctrl_expanded); } richText.setFocus(); } else { sectionComposite.setVisible(false); expandedComposite.setVisible(true); formSection.setClient(expandedComposite); expandLabel.setText(currentItem.getName() + " - " + (String) ((ImageHyperlink) e.getSource()).getData("Title")); //$NON-NLS-1$ //$NON-NLS-2$ IMethodRichText richText = (IMethodRichText) e.getHref(); ctrl_expanded.setInitialText(richText.getText()); ctrl_expanded.setModalObject(richText.getModalObject()); ctrl_expanded.setModalObjectFeature(richText .getModalObjectFeature()); ctrl_expanded.setFindReplaceAction(richText.getFindReplaceAction()); for (Iterator i = richText.getListeners(); i.hasNext();) { RichTextListener listener = (RichTextListener) i.next(); ctrl_expanded.addListener(listener.getEventType(), listener .getListener()); } boolean editable = !TngUtil.isLocked(contentElement); ctrl_expanded.setEditable(editable); if (editable) { ctrl_expanded.setFocus(); } setActiveRichTextControl(richText); } form.getBody().layout(true, true); descExpandFlag = !descExpandFlag; } private void setActiveRichTextControl(IMethodRichText editor) { activeControl = editor; } private IMethodRichText getActiveRichTextControl() { return activeControl; } private void initProviders() { checkItemsViewerContentProvider = new AdapterFactoryContentProvider( TngAdapterFactory.INSTANCE .getNavigatorView_ComposedAdapterFactory()) { public Object[] getElements(Object object) { if (object != checklist) return super.getElements(object); if (allcheckItems == null) { allcheckItems = new SectionList(checklist, SectionList.STEPS_FOR_ELEMENT_ONLY); } return allcheckItems.toArray(); } }; checkItemsViewerLabelProvider = new VariabilityElementLabelProvider( TngAdapterFactory.INSTANCE .getNavigatorView_ComposedAdapterFactory()) { public boolean isExternal(Object element) { return !checklist.getPresentation().getSections().contains( element); } }; } private void saveMainDescription() { if (currentItem != null) { IMethodRichText control = descExpandFlag ? ctrl_expanded : ctrl_maindesc; if (!control.getModified()) { return; } String oldContent = currentItem.getSectionDescription(); if (((MethodElementEditor) getEditor()).mustRestoreValue(control, oldContent)) { return; } String newContent = control.getText(); if (!newContent.equals(oldContent)) { actionMgr.doAction(IActionManager.SET, currentItem, UmaPackage.eINSTANCE.getSection_SectionDescription(), newContent, -1); } } } protected IActionManager getActionManager() { FormEditor editor = getEditor(); if (editor instanceof MethodElementEditor) { return ((MethodElementEditor) editor).getActionManager(); } return null; } private void checkSelection() { IStructuredSelection selection = (IStructuredSelection) checkItemsTableViewer .getSelection(); if (selection.size() > 0 && !TngUtil.isLocked(checklist)) { ctrl_delete.setEnabled(true); if (checkItemsTableViewer.getTable().getSelectionIndex() > 0 && !TngUtil.isLocked(checklist) && selection.size() == 1) { ctrl_up.setEnabled(true); } else { ctrl_up.setEnabled(false); } if (checkItemsTableViewer.getTable().getSelectionIndex() < checkItemsTableViewer .getTable().getItemCount() - 1 && !TngUtil.isLocked(checklist) && selection.size() == 1) { ctrl_down.setEnabled(true); } else { ctrl_down.setEnabled(false); } } if (selection.size() == 1) { editItem((org.eclipse.epf.uma.Section) selection.getFirstElement()); } } }