blob: 3a8cb6ae192802567889d2ed314ccd1a423e8bb4 [file] [log] [blame]
//------------------------------------------------------------------------------
// Copyright (c) 2005, 2007 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.properties;
import org.eclipse.emf.common.notify.AdapterFactory;
import org.eclipse.epf.authoring.ui.editors.ProcessEditor;
import org.eclipse.epf.authoring.ui.forms.ProcessBreakdownStructureFormPage;
import org.eclipse.epf.library.edit.command.IActionManager;
import org.eclipse.jface.viewers.ISelection;
import org.eclipse.ui.IWorkbenchPart;
import org.eclipse.ui.forms.editor.IFormPage;
import org.eclipse.ui.views.properties.IPropertySheetEntry;
import org.eclipse.ui.views.properties.IPropertySourceProvider;
import org.eclipse.ui.views.properties.PropertySheetEntry;
import org.eclipse.ui.views.properties.tabbed.ITabbedPropertySheetPageContributor;
import org.eclipse.ui.views.properties.tabbed.TabbedPropertySheetPage;
/**
* This class represents property sheet page for process elements
*
* @author Shilpa Toraskar
* @since 1.0
*
*/
public class EPFPropertySheetPage extends TabbedPropertySheetPage {
private IPropertySheetEntry rootEntry;
private static IPropertySourceProvider sourceProvider;
private static ISelection selection = null;
private static IActionManager actionMgr;
private static ProcessEditor processEditor;
public static String formPageID = null;
private static ProcessBreakdownStructureFormPage formPage = null;
public EPFPropertySheetPage(ProcessEditor editor) {
super((ITabbedPropertySheetPageContributor) editor);
actionMgr = ((ProcessEditor) editor).getActionManager();
processEditor = editor;
}
/**
* Get action manager
* @return
* Action Manager
*/
public static IActionManager getActionManager() {
return actionMgr;
}
/**
* Get editor associated with property sheet page
* @return
* Process Editor
*/
public static ProcessEditor getEditor() {
return processEditor;
}
/**
* Sets the given property source provider as the property source provider.
* <p>
* Calling this method is only valid if you are using this page's default
* root entry.
* </p>
*
* @param newProvider
* the property source provider
*/
public void setPropertySourceProvider(IPropertySourceProvider newProvider) {
sourceProvider = newProvider;
if (rootEntry == null) {
// create a new root
PropertySheetEntry root = new PropertySheetEntry();
rootEntry = root;
}
if (sourceProvider != null) {
// set the property source provider for root entry
if (rootEntry instanceof PropertySheetEntry) {
((PropertySheetEntry) rootEntry)
.setPropertySourceProvider(sourceProvider);
}
}
}
/**
* Return property source provider
*/
public static IPropertySourceProvider getPropertySourceProvider() {
return sourceProvider;
}
/**
* Return selection of the object from breakdown structure of the process editor
*/
public static ISelection getSelection() {
return selection;
}
/**
* @see org.eclipse.ui.views.properties.tabbed.TabbedPropertySheetPage#selectionChanged(org.eclipse.ui.IWorkbenchPart, org.eclipse.jface.viewers.ISelection)
*/
public void selectionChanged(IWorkbenchPart part, ISelection sel) {
selection = sel;
if (part instanceof ProcessEditor) {
processEditor = (ProcessEditor) part;
actionMgr = processEditor.getActionManager();
IFormPage activePage = processEditor.getActivePageInstance();
if (activePage instanceof ProcessBreakdownStructureFormPage)
formPage = (ProcessBreakdownStructureFormPage) activePage;
formPageID = activePage != null ? activePage.getId() : null;
}
super.selectionChanged(part, selection);
}
/**
* @see org.eclipse.ui.views.properties.tabbed.TabbedPropertySheetPage#handlePartActivated(org.eclipse.ui.IWorkbenchPart)
*/
public void handlePartActivated(IWorkbenchPart part) {
if (part instanceof ProcessEditor) {
processEditor = (ProcessEditor) part;
selection = processEditor.getSelection();
actionMgr = processEditor.getActionManager();
IFormPage activePage = processEditor.getActivePageInstance();
if (activePage instanceof ProcessBreakdownStructureFormPage)
formPage = (ProcessBreakdownStructureFormPage) activePage;
formPageID = activePage != null ? activePage.getId() : null;
}
super.handlePartActivated(part);
this.refresh();
}
/**
* Get current adapter factory of editor
* @return
* Adapter Factory
*/
public static AdapterFactory getAdapterFactory() {
return formPage.getAdapterFactory();
}
/**
* @see org.eclipse.ui.views.properties.tabbed.TabbedPropertySheetPage#refresh()
*/
public void refresh() {
// will see if this works..
try {
super.refresh();
} catch (Exception e) {
}
// TODO - get rid of internal APIs.
// if (this.getCurrentTab() != null) {
// this.getCurrentTab().refresh();
//
// // also refresh section
// ISection section = this.getCurrentTab().getSectionAtIndex(0);
// if (section != null) {
// section.refresh();
// }
// }
}
}