/*******************************************************************************
* Copyright (c) 2007, 2008 Edgar Espina.
* 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
*
*******************************************************************************/
package org.deved.antlride.common.ui;
import org.eclipse.core.runtime.Path;
import org.eclipse.dltk.internal.ui.editor.AnnotatedImageDescriptor;
import org.eclipse.dltk.ui.PluginImagesHelper;
import org.eclipse.dltk.ui.viewsupport.ImageImageDescriptor;
import org.eclipse.jface.resource.ImageDescriptor;
import org.eclipse.swt.SWT;
import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.graphics.ImageData;
import org.eclipse.swt.graphics.Point;
public final class AntlrImages {
private static final PluginImagesHelper helper = new PluginImagesHelper(
AntlrCommonUI.getDefault().getBundle(), new Path("/icons"));
public static final String ACTION = "action";
public static final String LEXER_RULE = "lexer_rule";
public static final String SCOPE = "scope";
public static final String FILTER_SCOPES = "filterScopes";
public static final String RUN = "run";
public static final String DEBUG = "debug";
public static final String RUN_JAVA = "runJava";
public static final String DEBUG_JAVA = "debugJava";
public static final String ZOOM_IN = "zoomIn";
public static final String ZOOM_OUT = "zoomOut";
// public static final String STATUS_OK = "statusOk";
public static final String CLEAR = "clear";
// public static final String SYNC_EDITOR = "syncEditor";
public static final String SAVE_AS = "saveAs";
// public static final String REMOVE_TEST_CASE = "removeTestCase";
public static final String SAVE_TEST_CASE = "saveTestCase";
// public static final String SEARCH_HISTORY = "searchHistory";
public static final String NEW_TEST_CASE = "newTestCase";
public static final String G = "g";
public static final String ANGLE_BRACKET_ST = "angleBracketST";
public static final String DOLLAR_ST = "dollarST";
public static final String PARSE_TREE = "parseTree";
// public static final String ITEM_SELECTED = "selected";
public static final String CONSOLE = "console";
public static final String RULE = "rule";
// public static final String OPEN_TEST_CASE = "openTestCase";
public static final String LAYOUT = "viewMenu";
public static final String DECISION = "decision";
public static final String TARGET_LANGUAGE = "target_language";
public static final String PACKAGE = "package";
public static final String RAILROAD = "railroad";
public static final String OPTIMIZE_GRAPH = "optG";
public static final String APPEND_GRAPH = "appendG";
static {
helper.createManaged(PluginImagesHelper.T_OBJ, "grammar_action.gif",
ACTION);
helper.createManaged(PluginImagesHelper.T_OBJ, "optimize_graph.gif",
OPTIMIZE_GRAPH);
helper.createManaged(PluginImagesHelper.T_OBJ, "lexer_rule.gif",
LEXER_RULE);
helper.createManaged(PluginImagesHelper.T_OBJ, "scope_obj.gif", SCOPE);
helper.createManaged(PluginImagesHelper.T_OBJ, "clear_diagram.gif",
CLEAR);
// helper.createManaged(PluginImagesHelper.T_OBJ, "status_ok.gif",
// STATUS_OK);
helper.createManaged(PluginImagesHelper.T_OBJ, "filter_scopes.gif",
FILTER_SCOPES);
helper.createManaged(PluginImagesHelper.T_ETOOL, "run_exc.gif", RUN);
helper
.createManaged(PluginImagesHelper.T_ETOOL, "debug_exc.gif",
DEBUG);
helper.createManaged(PluginImagesHelper.T_ETOOL, "zoomIn.gif", ZOOM_IN);
helper.createManaged(PluginImagesHelper.T_ETOOL, "zoomOut.gif",
ZOOM_OUT);
// helper.createManaged(PluginImagesHelper.T_ETOOL, "synced.gif",
// SYNC_EDITOR);
// helper.createManaged(PluginImagesHelper.T_OBJ, "remove_testcase.gif",
// REMOVE_TEST_CASE);
helper.createManaged(PluginImagesHelper.T_OBJ, "save.gif",
SAVE_TEST_CASE);
helper.createManaged(PluginImagesHelper.T_OBJ, "saveas.gif", SAVE_AS);
// helper.createManaged(PluginImagesHelper.T_OBJ, "search_history.gif",
// SEARCH_HISTORY);
helper.createManaged(PluginImagesHelper.T_OBJ, "testcase_obj.gif",
NEW_TEST_CASE);
helper.createManaged(PluginImagesHelper.T_OBJ, "g.gif", G);
helper.createManaged(PluginImagesHelper.T_OBJ,
"angle_bracket_st_obj.gif", ANGLE_BRACKET_ST);
helper.createManaged(PluginImagesHelper.T_OBJ, "dollar_st_obj.gif",
DOLLAR_ST);
helper.createManaged(PluginImagesHelper.T_ETOOL, "parsetree.gif",
PARSE_TREE);
// helper.createManaged(PluginImagesHelper.T_OBJ, "selected.gif",
// ITEM_SELECTED);
helper
.createManaged(PluginImagesHelper.T_ETOOL, "console.gif",
CONSOLE);
helper.createManaged(PluginImagesHelper.T_OBJ, "def_rule.gif", RULE);
// helper.createManaged(PluginImagesHelper.T_OBJ, "open_testcase.gif",
// OPEN_TEST_CASE);
helper.createManaged(PluginImagesHelper.T_ETOOL, "run_java.gif",
RUN_JAVA);
helper.createManaged(PluginImagesHelper.T_ETOOL, "debug_java.gif",
DEBUG_JAVA);
helper.createManaged(PluginImagesHelper.T_ETOOL, "layout.gif", LAYOUT);
helper.createManaged(PluginImagesHelper.T_ETOOL, "decision.gif",
DECISION);
helper.createManaged(PluginImagesHelper.T_ETOOL, "railroad.gif",
RAILROAD);
helper.createManaged(PluginImagesHelper.T_ETOOL, "append_railroad.gif",
APPEND_GRAPH);
helper.createManaged(PluginImagesHelper.T_OBJ, "target_language.gif",
TARGET_LANGUAGE);
helper.createManaged(PluginImagesHelper.T_OBJ, "package.gif",
PACKAGE);
// create some descriptors first
getDescriptor(G);
getDescriptor(NEW_TEST_CASE);
getDescriptor(SAVE_TEST_CASE);
getDescriptor(CLEAR);
getDescriptor(LAYOUT);
getDescriptor(DECISION);
getDescriptor(TARGET_LANGUAGE);
getDescriptor(PACKAGE);
}
private static final String COMPOSITE = "composite_";
public static ImageDescriptor getDescriptor(String key) {
ImageDescriptor descriptor = helper.getDescriptor(key);
if (!(descriptor instanceof CachedImageDescriptor)) {
CachedImageDescriptor cachedDescriptor = new CachedImageDescriptor(
descriptor);
helper.getImageRegistry().put(key, cachedDescriptor);
descriptor = cachedDescriptor;
}
return descriptor;
}
public static Image getImage(String key) {
return getImage(key, false);
}
public static Image createCompositeImage(String key, Point imageSize,
int direction, Image baseImage) {
ImageImageDescriptor baseImageDescriptor = baseImage == null ? null
: new ImageImageDescriptor(baseImage);
CompositeImageDescriptor descriptor = new CompositeImageDescriptor(key,
baseImageDescriptor, imageSize, direction);
Image image = descriptor.createImage();
helper.getImageRegistry().put(COMPOSITE + key, image);
return image;
}
public static Image getImage(String key, boolean composite) {
String imageName;
if (composite) {
imageName = COMPOSITE + key;
} else {
imageName = key;
}
Image image = helper.get(imageName);
return image;
}
static private class CompositeImageDescriptor extends
AnnotatedImageDescriptor {
private String imageName;
private boolean hasBaseImageDescriptor;
private int direction;
public CompositeImageDescriptor(String imageName,
ImageDescriptor baseImageDescriptor, Point size, int direction) {
super(baseImageDescriptor, size);
this.direction = direction;
this.imageName = imageName;
hasBaseImageDescriptor = baseImageDescriptor != null;
}
@Override
protected void drawCompositeImage(int width, int height) {
if (hasBaseImageDescriptor) {
super.drawCompositeImage(width, height);
} else {
drawAnnotations();
}
}
@Override
protected void drawAnnotations() {
Image image = AntlrImages.getImage(imageName);
ImageData imageData = image.getImageData();
if (direction == SWT.LEFT)
drawImageTopLeft(imageData);
else if (direction == SWT.RIGHT)
drawImageTopRight(imageData);
}
}
static private class CachedImageDescriptor extends ImageDescriptor {
private ImageData imageData;
private ImageDescriptor descriptor;
private Image image;
public CachedImageDescriptor(ImageDescriptor descriptor) {
this.descriptor = descriptor;
}
@Override
public Image createImage() {
if (image == null) {
image = descriptor.createImage();
}
return image;
}
@Override
public ImageData getImageData() {
if (imageData == null) {
imageData = descriptor.getImageData();
}
return imageData;
}
}
}