DeveloperSubSystemFactory Class After Editing For Filter Support


package samples.subsystems;

import RSESamples.*;
import com.ibm.etools.systems.dftsubsystem.impl.DefaultSubSystemFactoryImpl;
import com.ibm.etools.systems.subsystems.impl.*;
import com.ibm.etools.systems.subsystems.*;
import com.ibm.etools.systems.model.*;
import com.ibm.etools.systems.filters.*;
import com.ibm.etools.systems.filters.ui.actions.*;

import org.eclipse.jface.resource.*;
import org.eclipse.jface.action.IAction;
import org.eclipse.swt.widgets.Shell;

import java.util.*;

/**
 * This is our subsystem factory, which creates instances of our subsystems,
 *  and supplies the subsystem and filter actions to their popup menus.
 */
public class DeveloperSubSystemFactory extends DefaultSubSystemFactoryImpl
{

	/**
	 * Constructor for DeveloperSubSystemFactory.
	 */
	public DeveloperSubSystemFactory()
	{
		super();
	}
	
	/**
	 * Create an instance of our subsystem.
	 */
	protected SubSystem createSubSystemInternal(SystemConnection conn)
	{
	   	return new DeveloperSubSystem();
	}
	
	/**
	 * Intercept of parent method that creates an initial default filter pool.
	 * We intercept so that we can create an initial filter in that pool, which will
	 *  list all teams.
	 */
	protected SystemFilterPool createDefaultFilterPool(SystemFilterPoolManager mgr)
	{
		SystemFilterPool defaultPool = super.createDefaultFilterPool(mgr);
		Vector strings = new Vector();
		strings.add("*");
		try {
		  SystemFilter filter = mgr.createSystemFilter(defaultPool, "All teams", strings);
		  filter.setType("team");
		} catch (Exception exc) {}
		return defaultPool;
	}
	
	/**
	 * Intercept of parent method so we can supply our own value shown in the property
	 *  sheet for the "type" property when a filter is selected within our subsystem.
	 *
	 * Requires this line in rseSamplesResources.properties: property.type.teamfilter=Team filter
	 */
	public String getTranslatedFilterTypeProperty(SystemFilter selectedFilter)
	{
	   	String type = selectedFilter.getType();
	   	if (type == null)
	   	  type = "team";
	   	if (type.equals("team"))
	   	  return RSESamplesPlugin.getResourceString("property.type.teamfilter"); 
	   	else
	   	  return RSESamplesPlugin.getResourceString("property.type.devrfilter"); 
	}
	
	/**
	 * Override of parent method, to affect what is returned for the New Filter-> actions.
	 * We intercept here, versus getNewFilterPoolFilterAction, so that we can return multiple
	 *  actions versus just one.
	 */
	protected IAction[] getNewFilterPoolFilterActions(SystemFilterPool selectedPool, Shell shell)
	{
	  	SystemNewFilterAction teamAction = (SystemNewFilterAction)super.getNewFilterPoolFilterAction(selectedPool, shell);
	  	teamAction.setWizardPageTitle(RSESamplesPlugin.getResourceString("filter.team.pagetitle"));
	  	teamAction.setPage1Description(RSESamplesPlugin.getResourceString("filter.team.pagetext"));
	  	teamAction.setType("team");
	  	teamAction.setText(RSESamplesPlugin.getResourceString("filter.team.pagetitle") + "...");
	  	
	  	SystemNewFilterAction devrAction = (SystemNewFilterAction)super.getNewFilterPoolFilterAction(selectedPool, shell);    	
	  	devrAction.setWizardPageTitle(RSESamplesPlugin.getResourceString("filter.devr.pagetitle"));
	  	devrAction.setPage1Description(RSESamplesPlugin.getResourceString("filter.devr.pagetext"));
	  	devrAction.setType("devr");
	  	devrAction.setText(RSESamplesPlugin.getResourceString("filter.devr.pagetitle") + "...");
	  	devrAction.setFilterStringEditPane(new DeveloperFilterStringEditPane(shell));    	
	  	
	  	IAction[] actions = new IAction[2];
	  	actions[0] = teamAction;
	  	actions[1] = devrAction;
	  	return actions;
	 }
	  
	/**
	 * Override of parent method for returning the change-filter action, so we can affect it.
	 */
	protected IAction getChangeFilterAction(SystemFilter selectedFilter, Shell shell)
	{
	  	SystemChangeFilterAction action = (SystemChangeFilterAction)super.getChangeFilterAction(selectedFilter, shell);
	  	String type = selectedFilter.getType();
	  	if (type == null)
	  	  type = "team";
	  	if (type.equals("team"))
	  	{
	  		action.setDialogTitle(RSESamplesPlugin.getResourceString("filter.team.dlgtitle"));
	  	}
	  	else
	  	{
	  		action.setDialogTitle(RSESamplesPlugin.getResourceString("filter.devr.dlgtitle"));
	  		action.setFilterStringEditPane(new DeveloperFilterStringEditPane(shell));
	  	}    
	  	return action;
	}    	

	/**
	 * Override of parent method for returning the image for filters in our subsystem.
	 */
	public ImageDescriptor getSystemFilterImage(SystemFilter filter)
	{
	  	String type = filter.getType();
	  	if (type == null)
	  	  type = "team";
	  	if (type.equals("team"))
	   	  return RSESamplesPlugin.getDefault().getImageDescriptor("ICON_ID_TEAMFILTER");
	   	else
	   	  return RSESamplesPlugin.getDefault().getImageDescriptor("ICON_ID_DEVELOPERFILTER");
	}
}


Copyright IBM Corporation 2002, 2003.