blob: 848374cccddb406b8bf97a6ad83a55f3cb63de1e [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2011 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 API and implementation
*******************************************************************************/
package org.eclipse.wst.server.ui.internal.cnf;
import java.util.ArrayList;
import org.eclipse.swt.widgets.Display;
import org.eclipse.ui.IDecoratorManager;
import org.eclipse.ui.PlatformUI;
import org.eclipse.ui.navigator.CommonViewer;
/**
*
* The purpose of this class is proportionate a way to register those UI Decorators that
* needs to be updated after a Server has been modified. Basically this handler is a list
* of IDs of UI Decorators.
*
* @author israelgd@mx1.ibm.com
*/
public class ServerDecoratorsHandler {
final static String NAVIGATOR_DECORATOR_ID = "org.eclipse.wst.server.ui.navigatorDecorator";
protected static ArrayList <String> UIDecoratorsIDs = new ArrayList<String>();
static {
UIDecoratorsIDs.add(NAVIGATOR_DECORATOR_ID);
}
protected static IDecoratorManager decoratorManager = null;
protected static IDecoratorManager getDecoratorManager(){
if (decoratorManager == null){
decoratorManager = PlatformUI.getWorkbench().getDecoratorManager();
}
return decoratorManager;
}
/**
* Used to refresh the Server Decorators previously added and set selection after that.
* Triggers the decoration event of each Decorator.
* */
public static void refresh(final CommonViewer tableViewer) {
Display.getDefault().asyncExec(new Runnable() {
public void run() {
IDecoratorManager dm = PlatformUI.getWorkbench().getDecoratorManager();
ArrayList<String> UIDecoratorsIDsClone = (ArrayList<String>)UIDecoratorsIDs.clone();
for (String decoratorId: UIDecoratorsIDsClone) {
dm.update(decoratorId);
}
if (tableViewer != null){
tableViewer.setSelection(tableViewer.getSelection());
}
}
});
}
/**
* Used to refresh the Server Decorators previously added.
* @param server
* */
public static void refresh() {
refresh(null);
}
/**
* Remove a UI Decorator from the Decorator Handler.
* @param decoratorID
*/
public static void removeUIDecoratorsID(String decoratorID) {
synchronized (UIDecoratorsIDs) {
UIDecoratorsIDs.remove(decoratorID);
}
}
/**
* Adds a new UI Decorator from the Decorator Handler.
* @param decoratorID
*/
public static void addUIDecoratorsIDs(String decoratorID) {
synchronized (UIDecoratorsIDs) {
if(!UIDecoratorsIDs.contains(decoratorID)){
UIDecoratorsIDs.add(decoratorID);
}
}
}
}