// Copyright 2012 Georg-August-Universität Göttingen, Germany // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package de.ugoe.cs.autoquest.plugin.jfc.guimodel; import de.ugoe.cs.autoquest.eventcore.guimodel.AbstractDefaultGUIElement; import de.ugoe.cs.autoquest.eventcore.guimodel.IGUIElement; import de.ugoe.cs.autoquest.eventcore.guimodel.IGUIElementSpec; /** *

* Base class for all JFC GUI elements. *

* * @version 1.0 * @author Patrick Harms */ public class JFCGUIElement extends AbstractDefaultGUIElement { /** *

* Id for object serialization. *

*/ private static final long serialVersionUID = 1L; /** *

* Specification of the GUI Element *

*/ private JFCGUIElementSpec specification; /** *

* Constructor. Creates a new JFCGUIElement. *

* * @param specification * specification of created GUI element * @param parent * parent of the created GUI element; null means that the element is a top-level * window */ public JFCGUIElement(JFCGUIElementSpec specification, JFCGUIElement parent) { super(specification, parent); this.specification = specification; } /* * (non-Javadoc) * * @see de.ugoe.cs.autoquest.eventcore.IEventTarget#getPlatform() */ @Override public String getPlatform() { return "JFC"; } /** *

* Returns the type of the GUI element, i.e., the name of its Java class. *

* * @return the Java class name */ public String getJavaType() { return specification.getType(); } /** *

* Returns the name of the GUI element. *

* * @return the name */ public String getName() { return specification.getName(); } /** *

* Returns the icon of the GUI element. *

* * @return the icon */ String getIcon() { return specification.getIcon(); } /** *

* Returns the index of the GUI element. *

* * @return the index */ int getIndex() { return specification.getIndex(); } /** *

* Returns the object hash of the GUI element. *

* * @return the object hash */ int getElementHash() { return specification.getElementHash(); } /* * (non-Javadoc) * * @see * de.ugoe.cs.autoquest.eventcore.guimodel.IGUIElement#updateSpecification(de.ugoe.cs.autoquest * .eventcore .guimodel.IGUIElementSpec) */ @Override public void updateSpecification(IGUIElementSpec updateSpecification) { if (updateSpecification instanceof JFCGUIElementSpec) { specification.update(((JFCGUIElementSpec) updateSpecification)); } } /* * (non-Javadoc) * * @see java.lang.Object#toString() */ @Override public String getStringIdentifier() { String str = this.toString(); if (getParent() != null) { return str + "<-" + getParent().getStringIdentifier(); } return str; } public String getJacaretoHierarchy() { String str; // get the Java classname, ignore the package hierarchy if present String[] parts = getSpecification().getType().split("\\."); // find the correct Jacareto index // jacareto indices start at 1 int jacIndex = ((JFCGUIElementSpec) getSpecification()).getAltIndex() + 1; str = parts[parts.length - 1] + "_(" + jacIndex + ")"; if (getParent() != null) { return ((JFCGUIElement) getParent()).getJacaretoHierarchy() + "." + str; } return str; } public String getJacaretoRoot() { return getJacaretoHierarchy().split("\\.")[0]; } /* * (non-Javadoc) * * @see java.lang.Object#toString() */ @Override public String toString() { String str = getElementDescriptor() + "(" + getName() + "," + getElementHash() + "," + getIcon() + "," + getIndex() + ")"; return str; } /* * (non-Javadoc) * * @see de.ugoe.cs.autoquest.eventcore.guimodel.IGUIElement#getDistanceTo(IGUIElement) */ @Override public double getDistanceTo(IGUIElement otherElement) { throw new UnsupportedOperationException("not implemented yet"); } /** *

* A short string describing the GUI element, e.g., Button, Canvas, or ScrollBar. *

* * @return short element descriptor */ protected String getElementDescriptor() { return "Default"; } }