package captor.windowsystem.formcomponent; import java.util.Hashtable; import java.util.Vector; import javax.swing.JPanel; import javax.swing.tree.DefaultMutableTreeNode; import captor.modelsystem.Model; import captor.windowsystem.main.bodyPane.FITBodyCard; import captor.windowsystem.main.locationPane.util.FormPath; import captor.windowsystem.main.locationPane.util.TreeNavigator; /** * Form component abstract class. * * <p> * This class provides a common behavior to all form components. * </p> * * <p> * Every form componet have to extends this class and implements the * required methods from the interface IFormComponent. * </p> * * @author Kicho * */ public abstract class FormComponent extends JPanel implements IFormComponent { public static final long serialVersionUID = 2; protected Hashtable parameter; protected String errorMsg; protected Model model; protected DefaultMutableTreeNode node; public FormComponent(Model model, DefaultMutableTreeNode node) { this.model = model; this.node = node; parameter = new Hashtable(); } //------------------------------------------------------------------------- public String getErrorMsg() { return errorMsg; } //------------------------------------------------------------------------- //Get a form element denotated by a given path (i.e. parent(1.*)->FormElementId) public FormComponent getFormElement(String path) { String id = ""; String[] paths = path.split("->"); String npath = ""; for ( int i = 0; i < paths.length; i++ ) { if ( i == paths.length - 1 ) { id = paths[i]; } else { npath = npath.concat("->".concat(paths[i])); } } npath = npath.substring(2, npath.length()); TreeNavigator tn = new TreeNavigator(); DefaultMutableTreeNode targetNode = tn.getNode(node, npath); if ( targetNode == null ) { model.getGui().getGuiView().setErrorView("<br>1 - Meta-model error: Cannot find component read_from parameter value: " + path + "<br>"); return null; } Object obj = targetNode.getUserObject(); if ( ! (obj instanceof FormPath) ) { //error model.getGui().getGuiView().setErrorView("<br>2 - Meta-model error: Cannot find component read_from parameter value: " + path + "<br>"); } FormPath pp = (FormPath) obj; FITBodyCard card = pp.getCard(); if ( card != null ) { Vector formElemList = card.getFormElList(); for ( int i = 0; i < formElemList.size(); i++ ) { obj = formElemList.get(i); FormComponent fe = (FormComponent) obj; if ( fe.getId().toUpperCase().equals(id.toUpperCase()) ) return fe; } } //error model.getGui().getGuiView().setErrorView("<br>3 - Meta-model error: Cannot find component read_from parameter value: " + path); return null; } //------------------------------------------------------------------------- /** * @return Returns the node. */ public DefaultMutableTreeNode getNode() { return node; } /** * @param node The node to set. */ public void setNode(DefaultMutableTreeNode node) { this.node = node; } //------------------------------------------------------------------------- public Hashtable getParameter() { return parameter; } public void setParameter(String name, String value) { parameter.put(name.toUpperCase(), value); } public void setParameter(Hashtable parameter) { this.parameter = parameter; } //-------------------------------------------------------------------------- public void setModel(Model model) { this.model = model; } //------------------------------------------------------------------------- static String space = "                "; public void addErrorLine(String s) { if ( errorMsg == null ) errorMsg = ""; errorMsg = errorMsg + space + s + "</font><br><font color=\"#0000FF\">"; } //------------------------------------------------------------------------- public void cleanErrorLine() { errorMsg = ""; } //------------------------------------------------------------------------- }