/**
* Copyright (C) 2001-3, Anthony Harrison anh23@pitt.edu This library is free
* software; you can redistribute it and/or modify it under the terms of the GNU
* Lesser General Public License as published by the Free Software Foundation;
* either version 2.1 of the License, or (at your option) any later version.
* This library is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
* FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
* details. You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
/*
* Created on Apr 26, 2004 To change the template for this generated file go to
* Window - Preferences - Java - Code Generation - Code and Comments
*/
package org.jactr.eclipse.ui.content;
import org.antlr.runtime.tree.CommonTree;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.eclipse.jface.viewers.LabelProvider;
import org.eclipse.swt.graphics.Image;
import org.jactr.eclipse.ui.images.JACTRImages;
import org.jactr.io.antlr3.builder.JACTRBuilder;
import org.jactr.io.antlr3.misc.ASTSupport;
/**
* @author harrison To change the template for this generated type comment go to
* Window - Preferences - Java - Code Generation - Code and Comments
*/
public class ACTRLabelProvider extends LabelProvider
{
/**
* Default logger
*/
static private transient final Log LOGGER = LogFactory
.getLog(ACTRLabelProvider.class);
private final boolean _debug = false;
/**
*
*/
public ACTRLabelProvider()
{
super();
}
@Override
public Image getImage(Object element)
{
Image img = null;
if (element instanceof CommonTree)
{
CommonTree node = (CommonTree) element;
img = getImageOfAST(node);
}
return img;
}
@Override
public String getText(Object element)
{
CommonTree node = (CommonTree) element;
if (node == null) return "";
if (_debug) return node.toString();
String rtn = node.getText();
CommonTree nameNode = ASTSupport.getFirstDescendantWithType(node,
JACTRBuilder.NAME);
String name = "";
if (nameNode != null) name = nameNode.getText();
//LOGGER.error("Getting text for element " + node + " with type " + node.getType() + " and text " + rtn);
int type = node.getType();
switch (type)
{
case JACTRBuilder.CONDITIONS:
rtn = "lhs";
break;
case JACTRBuilder.ACTIONS:
rtn = "rhs";
break;
case JACTRBuilder.CHUNKS:
rtn = "chunks";
break;
case JACTRBuilder.ADD_ACTION:
case JACTRBuilder.REMOVE_ACTION:
case JACTRBuilder.MODIFY_ACTION:
case JACTRBuilder.QUERY_CONDITION:
case JACTRBuilder.MATCH_CONDITION:
rtn = node.getChild(0).getText();
break;
case JACTRBuilder.CHUNK:
case JACTRBuilder.CHUNK_TYPE:
case JACTRBuilder.PRODUCTION:
case JACTRBuilder.BUFFER:
case JACTRBuilder.MODEL:
rtn = name;
break;
case JACTRBuilder.SLOTS:
if (node.getChildCount() == 0)
rtn = "";
else
rtn = "...";
break;
case JACTRBuilder.SLOT:
rtn = new String(name + " " + node.getChild(1).getText() + " "
+ node.getChild(2).getText());
break;
case JACTRBuilder.PARAMETER:
rtn = new String(name + " " + node.getChild(1).getText());
break;
case JACTRBuilder.BUFFERS:
rtn = "Buffers";
break;
case JACTRBuilder.PROCEDURAL_MEMORY:
rtn = "Procedural";
break;
case JACTRBuilder.DECLARATIVE_MEMORY:
rtn = "Declarative";
break;
case JACTRBuilder.PARAMETERS:
rtn = "Parameters";
break;
}
return rtn;
}
static public Image getImageOfAST(CommonTree node)
{
Image img = null;
if (node == null) return null;
int type = node.getType();
switch (type)
{
case JACTRBuilder.LIBRARY:
case JACTRBuilder.DECLARATIVE_MEMORY:
case JACTRBuilder.PROCEDURAL_MEMORY:
img = JACTRImages.getImage(JACTRImages.LIBRARY);
break;
case JACTRBuilder.MODEL:
img = JACTRImages.getImage(JACTRImages.MODEL);
break;
case JACTRBuilder.PRODUCTION:
img = JACTRImages.getImage(JACTRImages.PRODUCTION);
break;
case JACTRBuilder.IDENTIFIER:
case JACTRBuilder.CHUNK:
case JACTRBuilder.CHUNKS:
img = JACTRImages.getImage(JACTRImages.CHUNK);
break;
case JACTRBuilder.CHUNK_TYPE:
img = JACTRImages.getImage(JACTRImages.CHUNK_TYPE);
break;
case JACTRBuilder.BUFFER:
case JACTRBuilder.BUFFERS:
img = JACTRImages.getImage(JACTRImages.BUFFER);
break;
case JACTRBuilder.MATCH_CONDITION:
img = JACTRImages.getImage(JACTRImages.CHECK);
break;
case JACTRBuilder.ADD_ACTION:
img = JACTRImages.getImage(JACTRImages.ADD);
break;
case JACTRBuilder.REMOVE_ACTION:
img = JACTRImages.getImage(JACTRImages.REMOVE);
break;
case JACTRBuilder.OUTPUT_ACTION:
img = JACTRImages.getImage(JACTRImages.OUTPUT);
break;
case JACTRBuilder.MODIFY_ACTION:
img = JACTRImages.getImage(JACTRImages.MODIFY);
break;
case JACTRBuilder.QUERY_CONDITION:
img = JACTRImages.getImage(JACTRImages.QUERY);
break;
case JACTRBuilder.SCRIPTABLE_ACTION:
case JACTRBuilder.SCRIPTABLE_CONDITION:
img = JACTRImages.getImage(JACTRImages.SCRIPT);
break;
case JACTRBuilder.SLOT:
case JACTRBuilder.SLOTS:
img = JACTRImages.getImage(JACTRImages.SLOT);
break;
case JACTRBuilder.PARAMETERS:
case JACTRBuilder.PARAMETER:
img = JACTRImages.getImage(JACTRImages.PARAMETER);
break;
case JACTRBuilder.EXTENSIONS:
case JACTRBuilder.EXTENSION:
img = JACTRImages.getImage(JACTRImages.EXTENSION);
break;
case JACTRBuilder.MODULES:
case JACTRBuilder.MODULE:
img = JACTRImages.getImage(JACTRImages.EXTENSION);
break;
case JACTRBuilder.CONDITIONS:
case JACTRBuilder.ACTIONS:
img = JACTRImages.getImage(JACTRImages.CONTAINER);
break;
}
if (LOGGER.isDebugEnabled())
LOGGER.debug("Returning " + img + " for " + type);
return img;
}
}