package org.nightlabs.jfire.reporting.admin.parameter.ui;
import org.eclipse.gef.palette.ConnectionCreationToolEntry;
import org.eclipse.gef.palette.MarqueeToolEntry;
import org.eclipse.gef.palette.PaletteContainer;
import org.eclipse.gef.palette.PaletteDrawer;
import org.eclipse.gef.palette.PaletteGroup;
import org.eclipse.gef.palette.PaletteRoot;
import org.eclipse.gef.palette.PaletteSeparator;
import org.eclipse.gef.palette.PanningSelectionToolEntry;
import org.eclipse.gef.palette.ToolEntry;
import org.eclipse.gef.ui.palette.FlyoutPaletteComposite.FlyoutPreferences;
import org.eclipse.jface.preference.IPreferenceStore;
import org.nightlabs.base.ui.resource.SharedImages;
import org.nightlabs.base.ui.resource.SharedImages.ImageDimension;
import org.nightlabs.base.ui.resource.SharedImages.ImageFormat;
import org.nightlabs.jfire.reporting.admin.parameter.ui.editpart.tree.ValueProviderConfigTreeEditPart;
import org.nightlabs.jfire.reporting.admin.parameter.ui.resource.Messages;
import org.nightlabs.jfire.reporting.admin.parameter.ui.tool.ConnectionToolEntry;
import org.nightlabs.jfire.reporting.admin.parameter.ui.tool.ValueProviderToolEntry;
import org.nightlabs.jfire.reporting.parameter.config.ValueAcquisitionSetup;
import org.nightlabs.jfire.reporting.parameter.config.ValueProviderConfig;
/**
* @author Daniel.Mazurek [at] NightLabs [dot] de
*
*/
public class PaletteFactory
{
/** Default palette size. */
protected static final int DEFAULT_PALETTE_SIZE = 125;
/** Preference ID used to persist the palette location. */
protected static final String PALETTE_DOCK_LOCATION = "PaletteFactory.Location"; //$NON-NLS-1$
/** Preference ID used to persist the palette size. */
protected static final String PALETTE_SIZE = "PaletteFactory.Size"; //$NON-NLS-1$
/** Preference ID used to persist the flyout palette's state. */
protected static final String PALETTE_STATE = "PaletteFactory.State"; //$NON-NLS-1$
public FlyoutPreferences createPalettePreferences()
{
// set default flyout palette preference values, in case the preference store
// does not hold stored values for the given preferences
getPreferenceStore().setDefault(PALETTE_DOCK_LOCATION, -1);
getPreferenceStore().setDefault(PALETTE_STATE, -1);
getPreferenceStore().setDefault(PALETTE_SIZE, DEFAULT_PALETTE_SIZE);
return new FlyoutPreferences() {
public int getDockLocation() {
return getPreferenceStore().getInt(PALETTE_DOCK_LOCATION);
}
public int getPaletteState() {
return getPreferenceStore().getInt(PALETTE_STATE);
}
public int getPaletteWidth() {
return getPreferenceStore().getInt(PALETTE_SIZE);
}
public void setDockLocation(int location) {
getPreferenceStore().setValue(PALETTE_DOCK_LOCATION, location);
}
public void setPaletteState(int state) {
getPreferenceStore().setValue(PALETTE_STATE, state);
}
public void setPaletteWidth(int width) {
getPreferenceStore().setValue(PALETTE_SIZE, width);
}
};
}
/**
* Returns the preference store for the ReportingAdminParameterPlugin.
* @see org.eclipse.ui.plugin.AbstractUIPlugin#getPreferenceStore()
*/
protected IPreferenceStore getPreferenceStore()
{
return ReportingAdminParameterPlugin.getDefault().getPreferenceStore();
}
/**
* Creates the PaletteRoot and adds all palette elements.
* Use this factory method to create a new palette for your graphical editor.
* @return a new PaletteRoot
*/
public PaletteRoot createPalette()
{
PaletteRoot palette = new PaletteRoot();
palette.add(createToolsGroup(palette));
palette.add(createModelGroup());
return palette;
}
protected PaletteContainer createToolsGroup(PaletteRoot palette)
{
PaletteGroup toolGroup = new PaletteGroup(Messages.getString("org.nightlabs.jfire.reporting.admin.parameter.ui.PaletteFactory.paletteGroup.tools.name")); //$NON-NLS-1$
// Add a selection tool to the group
ToolEntry tool = createSelectionToolEntry();
toolGroup.add(tool);
palette.setDefaultEntry(tool);
// Add a marquee tool to the group
toolGroup.add(createMarqueeToolEntry());
// Add a (unnamed) separator to the group
toolGroup.add(new PaletteSeparator());
return toolGroup;
}
protected ToolEntry createMarqueeToolEntry()
{
return new MarqueeToolEntry();
}
protected ToolEntry createSelectionToolEntry()
{
return new PanningSelectionToolEntry();
}
protected PaletteContainer createModelGroup()
{
PaletteDrawer componentsDrawer = new PaletteDrawer(Messages.getString("org.nightlabs.jfire.reporting.admin.parameter.ui.PaletteFactory.paletteGroup.model.name")); //$NON-NLS-1$
// add Connection Tool
ToolEntry component = createConnectionToolEntry();
componentsDrawer.add(component);
// add ValueProvider Tool
component = createValueProviderToolEntry();
componentsDrawer.add(component);
return componentsDrawer;
}
protected ToolEntry createConnectionToolEntry()
{
return new ConnectionCreationToolEntry(
Messages.getString("org.nightlabs.jfire.reporting.admin.parameter.ui.PaletteFactory.connectionTool.label"), //$NON-NLS-1$
Messages.getString("org.nightlabs.jfire.reporting.admin.parameter.ui.PaletteFactory.connectionTool.shortDesc"), //$NON-NLS-1$
null,
SharedImages.getSharedImageDescriptor(
ReportingAdminParameterPlugin.getDefault(),
ConnectionToolEntry.class, "", //$NON-NLS-1$
ImageDimension._16x16, ImageFormat.gif),
SharedImages.getSharedImageDescriptor(
ReportingAdminParameterPlugin.getDefault(),
ConnectionToolEntry.class, "", //$NON-NLS-1$
ImageDimension._24x24, ImageFormat.gif)
);
}
// protected ToolEntry createConnectionToolEntry()
// {
// return new ConnectionCreationToolEntry(
// "ConnectionToolLabel",
// "ConnectionToolShortDesc",
// null,
// SharedImages.getSharedImageDescriptor(
// ReportingAdminParameterPlugin.getDefault(),
// ConnectionToolEntry.class, "",
// ImageDimension._16x16, ImageFormat.gif),
// SharedImages.getSharedImageDescriptor(
// ReportingAdminParameterPlugin.getDefault(),
// ConnectionToolEntry.class, "",
// ImageDimension._24x24, ImageFormat.gif)
// );
// }
protected ToolEntry createValueProviderToolEntry()
{
return new ValueProviderToolEntry(
Messages.getString("org.nightlabs.jfire.reporting.admin.parameter.ui.PaletteFactory.providerTool.label"), //$NON-NLS-1$
Messages.getString("org.nightlabs.jfire.reporting.admin.parameter.ui.PaletteFactory.providerTool.shortDesc"), //$NON-NLS-1$
ValueProviderConfig.class,
getCreationFactory(ValueProviderConfig.class),
SharedImages.getSharedImageDescriptor(
ReportingAdminParameterPlugin.getDefault(),
ValueProviderConfigTreeEditPart.class),
null
);
}
public ModelCreationFactory getCreationFactory(Class targetClass) {
return new ModelCreationFactory(targetClass, setupProvider);
}
private IValueAcquisitionSetupProvider setupProvider;
public PaletteFactory(IValueAcquisitionSetupProvider setupProvider) {
this.setupProvider = setupProvider;
}
protected ValueAcquisitionSetup getValueAcquisitionSetup() {
return setupProvider.getValueAcquisitionSetup();
}
}