下面列出了怎么用org.eclipse.ui.internal.navigator.workingsets.WorkingSetsContentProvider的API类实例代码及写法,或者点击链接到github查看源代码。
public void onExtensionActivation(String aViewerId, String[] theNavigatorExtensionIds, boolean isActive) {
for (int i = 0; i < theNavigatorExtensionIds.length; i++) {
if (WorkingSetsContentProvider.EXTENSION_ID.equals(theNavigatorExtensionIds[i])) {
if (isActive) {
extensionStateModel = contentService.findStateModel(WorkingSetsContentProvider.EXTENSION_ID);
workingSetRootModeActionGroup.setStateModel(extensionStateModel);
extensionStateModel.addPropertyChangeListener(topLevelModeListener);
if (savedWorkingSet != null) {
setWorkingSet(savedWorkingSet);
}
managerChangeListener.listen();
} else {
savedWorkingSet = workingSet;
setWorkingSet(null);
viewer.getCommonNavigator().setWorkingSetLabel(null);
managerChangeListener.ignore();
workingSetRootModeActionGroup.setShowTopLevelWorkingSets(false);
extensionStateModel.removePropertyChangeListener(topLevelModeListener);
}
}
}
}
public void init(ICommonActionExtensionSite aSite) {
viewer = (CommonViewer) aSite.getStructuredViewer();
contentService = aSite.getContentService();
filterService = (NavigatorFilterService) contentService.getFilterService();
extensionStateModel = contentService.findStateModel(WorkingSetsContentProvider.EXTENSION_ID);
workingSetActionGroup = new WorkingSetFilterActionGroup(aSite.getViewSite().getShell(), filterChangeListener);
workingSetRootModeActionGroup = new WorkingSetRootModeActionGroup(viewer, extensionStateModel);
topLevelModeListener = new IPropertyChangeListener() {
public void propertyChange(PropertyChangeEvent event) {
setWorkingSet(workingSet);
viewer.getFrameList().reset();
}
};
if (contentService.isActive(WorkingSetsContentProvider.EXTENSION_ID)) {
managerChangeListener.listen();
extensionStateModel.addPropertyChangeListener(topLevelModeListener);
}
contentService.getActivationService().addExtensionActivationListener(activationListener);
}
/**
* Toggle whether top level working sets should be displayed as a group or
* collapse to just show their contents.
*
* @param showTopLevelWorkingSets
*/
public void setShowTopLevelWorkingSets(boolean showTopLevelWorkingSets) {
if (actions == null)
actions = createActions();
currentSelection = showTopLevelWorkingSets ? 1 : 0;
workingSetsAction.setChecked(showTopLevelWorkingSets);
projectsAction.setChecked(!showTopLevelWorkingSets);
if (items != null) {
for (int i = 0; i < items.length; i++) {
if(items[i] != null && actions[i] != null)
items[i].setSelection(actions[i].isChecked());
}
}
if (stateModel != null) {
stateModel.setBooleanProperty(
WorkingSetsContentProvider.SHOW_TOP_LEVEL_WORKING_SETS,
showTopLevelWorkingSets);
}
}
public void onExtensionActivation(String aViewerId, String[] theNavigatorExtensionIds, boolean isActive) {
for (int i = 0; i < theNavigatorExtensionIds.length; i++) {
if (WorkingSetsContentProvider.EXTENSION_ID.equals(theNavigatorExtensionIds[i])) {
if (isActive) {
extensionStateModel = contentService.findStateModel(WorkingSetsContentProvider.EXTENSION_ID);
workingSetRootModeActionGroup.setStateModel(extensionStateModel);
extensionStateModel.addPropertyChangeListener(topLevelModeListener);
if (savedWorkingSet != null) {
setWorkingSet(savedWorkingSet);
}
managerChangeListener.listen();
} else {
savedWorkingSet = workingSet;
setWorkingSet(null);
viewer.getCommonNavigator().setWorkingSetLabel(null);
managerChangeListener.ignore();
workingSetRootModeActionGroup.setShowTopLevelWorkingSets(false);
extensionStateModel.removePropertyChangeListener(topLevelModeListener);
}
}
}
}
public void init(ICommonActionExtensionSite aSite) {
viewer = (CommonViewer) aSite.getStructuredViewer();
contentService = aSite.getContentService();
filterService = (NavigatorFilterService) contentService.getFilterService();
extensionStateModel = contentService.findStateModel(WorkingSetsContentProvider.EXTENSION_ID);
workingSetActionGroup = new WorkingSetFilterActionGroup(aSite.getViewSite().getShell(), filterChangeListener);
workingSetRootModeActionGroup = new WorkingSetRootModeActionGroup(viewer, extensionStateModel);
topLevelModeListener = new IPropertyChangeListener() {
public void propertyChange(PropertyChangeEvent event) {
setWorkingSet(workingSet);
viewer.getFrameList().reset();
}
};
if (contentService.isActive(WorkingSetsContentProvider.EXTENSION_ID)) {
managerChangeListener.listen();
extensionStateModel.addPropertyChangeListener(topLevelModeListener);
}
contentService.getActivationService().addExtensionActivationListener(activationListener);
}
/**
* Toggle whether top level working sets should be displayed as a group or
* collapse to just show their contents.
*
* @param showTopLevelWorkingSets
*/
public void setShowTopLevelWorkingSets(boolean showTopLevelWorkingSets) {
if (actions == null)
actions = createActions();
currentSelection = showTopLevelWorkingSets ? 1 : 0;
workingSetsAction.setChecked(showTopLevelWorkingSets);
projectsAction.setChecked(!showTopLevelWorkingSets);
if (items != null) {
for (int i = 0; i < items.length; i++) {
if(items[i] != null && actions[i] != null)
items[i].setSelection(actions[i].isChecked());
}
}
if (stateModel != null) {
stateModel.setBooleanProperty(
WorkingSetsContentProvider.SHOW_TOP_LEVEL_WORKING_SETS,
showTopLevelWorkingSets);
}
}
public void propertyChange(PropertyChangeEvent event) {
if (ignoreFilterChangeEvents)
return;
IWorkingSet newWorkingSet = (IWorkingSet) event.getNewValue();
setWorkingSet(newWorkingSet);
if (newWorkingSet != null) {
if (!contentService.isActive(WorkingSetsContentProvider.EXTENSION_ID)) {
contentService.getActivationService().activateExtensions(
new String[] { WorkingSetsContentProvider.EXTENSION_ID }, false);
contentService.getActivationService().persistExtensionActivations();
}
if (newWorkingSet.isAggregateWorkingSet()) {
IAggregateWorkingSet agWs = (IAggregateWorkingSet) newWorkingSet;
IWorkingSet[] comps = agWs.getComponents();
if (comps.length > 1) {
viewer.getCommonNavigator().setWorkingSetLabel(
WorkbenchNavigatorMessages.actions_WorkingSetActionProvider_multipleWorkingSets);
} else if (comps.length > 0) {
viewer.getCommonNavigator().setWorkingSetLabel(comps[0].getLabel());
} else {
viewer.getCommonNavigator().setWorkingSetLabel(null);
}
} else
viewer.getCommonNavigator().setWorkingSetLabel(workingSet.getLabel());
} else {
viewer.getCommonNavigator().setWorkingSetLabel(null);
}
viewer.getFrameList().reset();
}
/**
* Set current active working set.
*
* @param workingSet
* working set to be activated, may be <code>null</code>
*/
protected void setWorkingSet(IWorkingSet workingSet) {
this.workingSet = workingSet;
emptyWorkingSet = workingSet != null && workingSet.isAggregateWorkingSet() && workingSet.isEmpty();
ignoreFilterChangeEvents = true;
try {
workingSetActionGroup.setWorkingSet(workingSet);
} finally {
ignoreFilterChangeEvents = false;
}
if (viewer != null) {
setWorkingSetFilter(workingSet);
if (workingSet == null || emptyWorkingSet
|| !extensionStateModel.getBooleanProperty(WorkingSetsContentProvider.SHOW_TOP_LEVEL_WORKING_SETS)) {
if (viewer.getInput() != originalViewerInput) {
viewer.setInput(originalViewerInput);
} else {
viewer.refresh();
}
} else {
if (!workingSet.isAggregateWorkingSet()) {
IWorkingSetManager workingSetManager = PlatformUI.getWorkbench().getWorkingSetManager();
viewer.setInput(workingSetManager.createAggregateWorkingSet(
"", "", new IWorkingSet[] { workingSet })); //$NON-NLS-1$ //$NON-NLS-2$
} else {
viewer.setInput(workingSet);
}
}
}
}
public void restoreState(final IMemento aMemento) {
super.restoreState(aMemento);
// Need to run this async to avoid being reentered when processing a selection change
viewer.getControl().getShell().getDisplay().asyncExec(new Runnable() {
public void run() {
boolean showWorkingSets = true;
if (aMemento != null) {
Integer showWorkingSetsInt = aMemento
.getInteger(WorkingSetsContentProvider.SHOW_TOP_LEVEL_WORKING_SETS);
showWorkingSets = showWorkingSetsInt == null || showWorkingSetsInt.intValue() == 1;
extensionStateModel.setBooleanProperty(WorkingSetsContentProvider.SHOW_TOP_LEVEL_WORKING_SETS,
showWorkingSets);
workingSetRootModeActionGroup.setShowTopLevelWorkingSets(showWorkingSets);
String lastWorkingSetName = aMemento.getString(TAG_CURRENT_WORKING_SET_NAME);
initWorkingSetFilter(lastWorkingSetName);
} else {
showWorkingSets = false;
extensionStateModel.setBooleanProperty(WorkingSetsContentProvider.SHOW_TOP_LEVEL_WORKING_SETS,
showWorkingSets);
workingSetRootModeActionGroup.setShowTopLevelWorkingSets(showWorkingSets);
}
}
});
}
public void saveState(IMemento aMemento) {
super.saveState(aMemento);
if (aMemento != null) {
int showWorkingSets = extensionStateModel
.getBooleanProperty(WorkingSetsContentProvider.SHOW_TOP_LEVEL_WORKING_SETS) ? 1 : 0;
aMemento.putInteger(WorkingSetsContentProvider.SHOW_TOP_LEVEL_WORKING_SETS, showWorkingSets);
if (workingSet != null) {
aMemento.putString(TAG_CURRENT_WORKING_SET_NAME, workingSet.getName());
}
}
}
public void run() {
if (stateModel
.getBooleanProperty(WorkingSetsContentProvider.SHOW_TOP_LEVEL_WORKING_SETS) != groupWorkingSets) {
stateModel.setBooleanProperty(
WorkingSetsContentProvider.SHOW_TOP_LEVEL_WORKING_SETS,
groupWorkingSets);
structuredViewer.getControl().setRedraw(false);
try {
structuredViewer.refresh();
} finally {
structuredViewer.getControl().setRedraw(true);
}
}
}
public void propertyChange(PropertyChangeEvent event) {
if (ignoreFilterChangeEvents)
return;
IWorkingSet newWorkingSet = (IWorkingSet) event.getNewValue();
setWorkingSet(newWorkingSet);
if (newWorkingSet != null) {
if (!contentService.isActive(WorkingSetsContentProvider.EXTENSION_ID)) {
contentService.getActivationService().activateExtensions(
new String[] { WorkingSetsContentProvider.EXTENSION_ID }, false);
contentService.getActivationService().persistExtensionActivations();
}
if (newWorkingSet.isAggregateWorkingSet()) {
IAggregateWorkingSet agWs = (IAggregateWorkingSet) newWorkingSet;
IWorkingSet[] comps = agWs.getComponents();
if (comps.length > 1) {
viewer.getCommonNavigator().setWorkingSetLabel(
WorkbenchNavigatorMessages.actions_WorkingSetActionProvider_multipleWorkingSets);
} else if (comps.length > 0) {
viewer.getCommonNavigator().setWorkingSetLabel(comps[0].getLabel());
} else {
viewer.getCommonNavigator().setWorkingSetLabel(null);
}
} else
viewer.getCommonNavigator().setWorkingSetLabel(workingSet.getLabel());
} else {
viewer.getCommonNavigator().setWorkingSetLabel(null);
}
viewer.getFrameList().reset();
}
/**
* Set current active working set.
*
* @param workingSet
* working set to be activated, may be <code>null</code>
*/
protected void setWorkingSet(IWorkingSet workingSet) {
this.workingSet = workingSet;
emptyWorkingSet = workingSet != null && workingSet.isAggregateWorkingSet() && workingSet.isEmpty();
ignoreFilterChangeEvents = true;
try {
workingSetActionGroup.setWorkingSet(workingSet);
} finally {
ignoreFilterChangeEvents = false;
}
if (viewer != null) {
setWorkingSetFilter(workingSet);
if (workingSet == null || emptyWorkingSet
|| !extensionStateModel.getBooleanProperty(WorkingSetsContentProvider.SHOW_TOP_LEVEL_WORKING_SETS)) {
if (viewer.getInput() != originalViewerInput) {
viewer.setInput(originalViewerInput);
} else {
viewer.refresh();
}
} else {
if (!workingSet.isAggregateWorkingSet()) {
IWorkingSetManager workingSetManager = PlatformUI.getWorkbench().getWorkingSetManager();
viewer.setInput(workingSetManager.createAggregateWorkingSet(
"", "", new IWorkingSet[] { workingSet })); //$NON-NLS-1$ //$NON-NLS-2$
} else {
viewer.setInput(workingSet);
}
}
}
}
public void restoreState(final IMemento aMemento) {
super.restoreState(aMemento);
// Need to run this async to avoid being reentered when processing a selection change
viewer.getControl().getShell().getDisplay().asyncExec(new Runnable() {
public void run() {
boolean showWorkingSets = true;
if (aMemento != null) {
Integer showWorkingSetsInt = aMemento
.getInteger(WorkingSetsContentProvider.SHOW_TOP_LEVEL_WORKING_SETS);
showWorkingSets = showWorkingSetsInt == null || showWorkingSetsInt.intValue() == 1;
extensionStateModel.setBooleanProperty(WorkingSetsContentProvider.SHOW_TOP_LEVEL_WORKING_SETS,
showWorkingSets);
workingSetRootModeActionGroup.setShowTopLevelWorkingSets(showWorkingSets);
String lastWorkingSetName = aMemento.getString(TAG_CURRENT_WORKING_SET_NAME);
initWorkingSetFilter(lastWorkingSetName);
} else {
showWorkingSets = false;
extensionStateModel.setBooleanProperty(WorkingSetsContentProvider.SHOW_TOP_LEVEL_WORKING_SETS,
showWorkingSets);
workingSetRootModeActionGroup.setShowTopLevelWorkingSets(showWorkingSets);
}
}
});
}
public void saveState(IMemento aMemento) {
super.saveState(aMemento);
if (aMemento != null) {
int showWorkingSets = extensionStateModel
.getBooleanProperty(WorkingSetsContentProvider.SHOW_TOP_LEVEL_WORKING_SETS) ? 1 : 0;
aMemento.putInteger(WorkingSetsContentProvider.SHOW_TOP_LEVEL_WORKING_SETS, showWorkingSets);
if (workingSet != null) {
aMemento.putString(TAG_CURRENT_WORKING_SET_NAME, workingSet.getName());
}
}
}
public void run() {
if (stateModel
.getBooleanProperty(WorkingSetsContentProvider.SHOW_TOP_LEVEL_WORKING_SETS) != groupWorkingSets) {
stateModel.setBooleanProperty(
WorkingSetsContentProvider.SHOW_TOP_LEVEL_WORKING_SETS,
groupWorkingSets);
structuredViewer.getControl().setRedraw(false);
try {
structuredViewer.refresh();
} finally {
structuredViewer.getControl().setRedraw(true);
}
}
}
/**
* Starts listening to property changes related to which should be the top-level elements to be shown.
*/
public void init(ICommonContentExtensionSite aConfig, CommonViewer viewer) {
//if it had something, dispose of its association!
this.dispose();
try {
extensionStateModel = viewer.getNavigatorContentService().findStateModel(
WorkingSetsContentProvider.EXTENSION_ID);
extensionStateModel.addPropertyChangeListener(rootModeListener);
} catch (Exception e) {
Log.log(e);
}
updateRootMode();
}