Package org.enhydra.jawe.base.panel

Source Code of org.enhydra.jawe.base.panel.StandardPanelGenerator$IconCBoxRenderer

package org.enhydra.jawe.base.panel;

import java.awt.Component;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;

import javax.swing.ImageIcon;
import javax.swing.JLabel;
import javax.swing.JList;
import javax.swing.ListCellRenderer;

import org.enhydra.jawe.JaWE;
import org.enhydra.jawe.JaWEManager;
import org.enhydra.jawe.Settings;
import org.enhydra.jawe.Utils;
import org.enhydra.jawe.base.panel.panels.XMLActualParametersPanel;
import org.enhydra.jawe.base.panel.panels.XMLBasicListPanel;
import org.enhydra.jawe.base.panel.panels.XMLBasicPanel;
import org.enhydra.jawe.base.panel.panels.XMLBasicTablePanel;
import org.enhydra.jawe.base.panel.panels.XMLComboChoicePanel;
import org.enhydra.jawe.base.panel.panels.XMLComboPanel;
import org.enhydra.jawe.base.panel.panels.XMLDataTypesPanel;
import org.enhydra.jawe.base.panel.panels.XMLGroupPanel;
import org.enhydra.jawe.base.panel.panels.XMLLocationPanel;
import org.enhydra.jawe.base.panel.panels.XMLMultiLineTextPanel;
import org.enhydra.jawe.base.panel.panels.XMLPanel;
import org.enhydra.jawe.base.panel.panels.XMLRadioPanel;
import org.enhydra.jawe.base.panel.panels.XMLTabbedPanel;
import org.enhydra.jawe.base.panel.panels.XMLTextPanel;
import org.enhydra.jawe.base.panel.panels.XMLTransitionPanel;
import org.enhydra.shark.utilities.SequencedHashMap;
import org.enhydra.shark.xpdl.XMLAttribute;
import org.enhydra.shark.xpdl.XMLCollection;
import org.enhydra.shark.xpdl.XMLCollectionElement;
import org.enhydra.shark.xpdl.XMLComplexChoice;
import org.enhydra.shark.xpdl.XMLComplexElement;
import org.enhydra.shark.xpdl.XMLElement;
import org.enhydra.shark.xpdl.XMLEmptyChoiceElement;
import org.enhydra.shark.xpdl.XMLSimpleElement;
import org.enhydra.shark.xpdl.XMLUtil;
import org.enhydra.shark.xpdl.XPDLConstants;
import org.enhydra.shark.xpdl.elements.*;
import org.enhydra.shark.xpdl.elements.Package;

public class StandardPanelGenerator implements PanelGenerator {

    protected PanelContainer pc;

    public StandardPanelGenerator() {
    }

    public void setPanelContainer(PanelContainer pc) {
        this.pc = pc;
    }

    public PanelContainer getPanelContainer() {
        return pc;
    }

    public XMLPanel getPanel(Activities el) {
        return generateStandardTablePanel(el, true, false);
    }

    public XMLPanel getPanel(Activity el) {

        List panels = new ArrayList();
        Set hidden = getHiddenElements("XMLGroupPanel", el);
        for (int i = 1;; i++) {
            try {
                XMLPanel p = getPanel(el, i, hidden);
                if (p != null) {
                    panels.add(p);
                }
            } catch (Exception ex) {
                break;
            }
        }

        if (panels.size() > 1) {
            return new XMLTabbedPanel(getPanelContainer(),
                    el,
                    panels,
                    JaWEManager.getInstance().getLabelGenerator().getLabel(el),
                    false);
        } else if (panels.size() == 1) {
            return (XMLPanel) panels.get(0);
        } else {
            return new XMLBasicPanel();
        }

    }

    //CUSTOM
    protected XMLPanel getPanel(Activity el, int no, Set hidden) {
        XMLPanel p = null;
        List panelElements = new ArrayList();

        switch(no) {
            case 1:
                // get workflow variables and formal parameters
                WorkflowProcess process = (WorkflowProcess) el.getParent().getParent();
                Map m = XMLUtil.getPossibleVariables(process);
                XMLCollectionElement[] fields = (XMLCollectionElement[]) m.values().toArray(new XMLCollectionElement[0]);
                FormalParameters fps = process.getFormalParameters();
                Map fieldMap = new HashMap();
                //add workflow variables
                for (int i = 0; i < fields.length; i++) {
                    fieldMap.put(fields[i].getId(), fields[i]);
                }
                // make updateable
                ExtendedAttributes ea = el.getExtendedAttributes();
                for(Iterator it=fieldMap.keySet().iterator(); it.hasNext();) {
                    String id = (String)it.next();
                    ExtendedAttribute attrib = new ExtendedAttribute(ea);
                    attrib.setName("VariableToProcess_UPDATE");
                    attrib.setVValue(id);
                    if (!ea.contains(attrib)) {
                        ea.add(attrib);
                    }
                }

                // generate activity panel
                if (!hidden.contains(el.get("Id"))) {
                    panelElements.add(el.get("Id"));
                }
                if (!hidden.contains(el.get("Name"))) {
                    panelElements.add(el.get("Name"));
                }
                TransitionRestrictions trs = el.getTransitionRestrictions();
                if (!hidden.contains(trs) && trs.size() > 0) {
                    TransitionRestriction tr = (TransitionRestriction) trs.get(0);
                    panelElements.add(getPanel(tr));
                }
                if (panelElements.size() > 0) {
                    p = new XMLGroupPanel(getPanelContainer(),
                            el,
                            panelElements,
                            getPanelContainer().getLanguageDependentString("GeneralKey"),
                            true,
                            false,
                            true);
                }
                break;
            case 2:
                if (el.getActivityType() != XPDLConstants.ACTIVITY_TYPE_ROUTE) {
                    if (!hidden.contains(el.get("Limit"))) {
                        panelElements.add(el.get("Limit"));
                    }
                    if (!hidden.contains(el.getDeadlines())) {
                        panelElements.add(this.getPanel(el.getDeadlines()));
                    }
                    if (panelElements.size() > 0) {
                        p = new XMLGroupPanel(getPanelContainer(),
                                el,
                                panelElements,
                                getPanelContainer().getLanguageDependentString("DeadlinesKey"),
                                true,
                                false,
                                true);
                    }
                }
                break;
            case 3:
                if (!(hidden.contains(el.getActivityTypes()))) {
                    int type = el.getActivityType();
                    if (type == XPDLConstants.ACTIVITY_TYPE_SUBFLOW) {
                        SubFlow sbflw = el.getActivityTypes().getImplementation().getImplementationTypes().getSubFlow();
                        p = this.getPanel(sbflw);
                    }
                }
                break;
            default:
                throw new RuntimeException();
        }
        return p;
    }
    //END CUSTOM

    public XMLPanel getPanel(ActivitySet el) {
        return generateStandardGroupPanel(el, true, false);
    }

    public XMLPanel getPanel(ActivitySets el) {
        return generateStandardTablePanel(el, true, false);
    }

    public XMLPanel getPanel(ActivityTypes el) {
        return generateStandardPanel(el);
    }

    public XMLPanel getPanel(ActualParameter el) {
        SequencedHashMap choices = XMLUtil.getPossibleVariables(XMLUtil.getWorkflowProcess(el));
        Object choosen = choices.get(el.toValue());
        if (choosen == null) {
            if (!el.toValue().equals("")) {
                choosen = el.toValue();
            }
        }
        SpecialChoiceElement cc = new SpecialChoiceElement(el,
                "",
                new ArrayList(choices.values()),
                choosen,
                true,
                "Id",
                el.toName(),
                el.isRequired());
        cc.setReadOnly(el.isReadOnly());

        return new XMLComboPanel(getPanelContainer(),
                cc,
                null,
                false,
                true,
                false,
                true,
                JaWEManager.getInstance().getJaWEController().canModifyElement(el));
    }

    public XMLPanel getPanel(ActualParameters el) {
        return generateStandardListPanel(el, true, false);
    }

    public XMLPanel getPanel(Application el) {
        return generateStandardGroupPanel(el, true, false);
    }

    public XMLPanel getPanel(Applications el) {
        return generateStandardPanel(el);
    }

    public XMLPanel getPanel(ApplicationTypes el) {
        return generateStandardPanel(el);
    }

    public XMLPanel getPanel(ArrayType el) {
        return generateStandardPanel(el);
    }

    public XMLPanel getPanel(Author el) {
        return generateStandardPanel(el);
    }

    public XMLPanel getPanel(Automatic el) {
        return new XMLBasicPanel();
    }

    public XMLPanel getPanel(BasicType el) {
        return this.getPanel((XMLAttribute) el.get("Type"));
    }

    public XMLPanel getPanel(BlockActivity el) {
        return generateStandardPanel(el);
    }

    public XMLPanel getPanel(Codepage el) {
        return generateStandardPanel(el);
    }

    public XMLPanel getPanel(Condition el) {
        return generateStandardGroupPanel(el, true, false);
    }

    protected XMLPanel getPanel(Condition el, boolean hasTitle) {
        return generateStandardGroupPanel(el, hasTitle, false);
    }

    public XMLPanel getPanel(ConformanceClass el) {
        return generateStandardPanel(el.getGraphConformanceAttribute());
    }

    public XMLPanel getPanel(Cost el) {
        return generateStandardPanel(el);
    }

    public XMLPanel getPanel(CostUnit el) {
        return generateStandardPanel(el);
    }

    public XMLPanel getPanel(Countrykey el) {
        return generateStandardPanel(el);
    }

    public XMLPanel getPanel(Created el) {
        return generateStandardPanel(el);
    }

    public XMLPanel getPanel(DataField el) {
        Set hidden = getHiddenElements("XMLGroupPanel", el);
        List subpanels = new ArrayList();
        List groupsToShow = new ArrayList();
        if (!hidden.contains(el.get("Id"))) {
            subpanels.add(generateStandardTextPanel(el.get("Id"), true));
        }
        if (subpanels.size() > 0) {
            groupsToShow.add(new XMLGroupPanel(getPanelContainer(),
                    el,
                    subpanels,
                    "",
                    true,
                    false,
                    true));
        }
        return new XMLGroupPanel(getPanelContainer(),
                el,
                groupsToShow,
                "",
                true,
                false,
                true);
    }

    public XMLPanel getPanel(DataFields el) {
        return generateStandardListPanel(el, true, false);
    }

    public XMLPanel getPanel(DataType el) {
        return this.getPanel(el.getDataTypes());
    }

    public XMLPanel getPanel(DataTypes el) {
        return new XMLDataTypesPanel(getPanelContainer(),
                el,
                null,
                JaWEManager.getInstance().getLabelGenerator().getLabel(el),
                JaWEManager.getInstance().getJaWEController().canModifyElement(el));
    }

    public XMLPanel getPanel(Deadline el) {
        XMLPanel p = null;
        List panelElements = new ArrayList();
        panelElements.add(el.get("Execution").toName());
        panelElements.add(el.get("DurationUnit").toName());
        panelElements.add(el.get("DeadlineLimit").toName());
        panelElements.add(el.get("ExceptionName").toName());
        p = new XMLGroupPanel(getPanelContainer(),
                el,
                panelElements,
                getPanelContainer().getLanguageDependentString("DeadlineKey"),
                true,
                false,
                true);
        return p;
    }

    public XMLPanel getPanel(DeadlineCondition el) {
        return null;
    }

    public XMLPanel getPanel(Deadlines el) {
        XMLPanel p = null;
        List columnList = new ArrayList();
        Deadline d = (Deadline) el.generateNewElement();
        columnList.add(d.get("Execution").toName());
        columnList.add(d.get("DurationUnit").toName());
        columnList.add(d.get("DeadlineLimit").toName());
        columnList.add(d.get("ExceptionName").toName());
        p = new XMLBasicTablePanel((InlinePanel) getPanelContainer(),
                el,
                columnList,
                el.toElements(),
                getPanelContainer().getLanguageDependentString("DeadlinesKey"),
                true,
                false,
                false,
                false,
                true,
                true);
        return p;
    }

    public XMLPanel getPanel(DeclaredType el) {
        XMLElement tdsel = el;
        while (!(tdsel instanceof TypeDeclarations)) {
            tdsel = tdsel.getParent();
            if (tdsel == null) {
                tdsel = XMLUtil.getPackage(el).getTypeDeclarations();
                break;
            }
        }

        TypeDeclarations tds = (TypeDeclarations) tdsel;
        List choices = tds.toElements();
        XMLElement choosen = tds.getTypeDeclaration(el.getId());
        if (el.getParent().getParent() instanceof TypeDeclaration) {
            choices.remove(el.getParent().getParent());
        }
        SpecialChoiceElement cc = new SpecialChoiceElement(el,
                "Id",
                choices,
                choosen,
                false,
                "Id",
                "SubType",
                el.isRequired());
        cc.setReadOnly(el.isReadOnly());

        return new XMLComboPanel(getPanelContainer(),
                cc,
                null,
                false,
                true,
                false,
                false,
                JaWEManager.getInstance().getJaWEController().canModifyElement(el));

    }

    public XMLPanel getPanel(Description el) {
        return generateStandardMultiLineTextPanel(el,
                true,
                XMLMultiLineTextPanel.SIZE_SMALL,
                true);
    }

    public XMLPanel getPanel(Documentation el) {
        return new XMLLocationPanel(getPanelContainer(), el, JaWEManager.getInstance().getJaWEController().canModifyElement(el));
    }

    public XMLPanel getPanel(Duration el) {
        return generateStandardPanel(el);
    }

    public XMLPanel getPanel(EnumerationType el) {
        return generateStandardListPanel(el, true, false);
    }

    public XMLPanel getPanel(EnumerationValue el) {
        return generateStandardPanel(el);
    }

    public XMLPanel getPanel(ExceptionName el) {
        return generateStandardPanel(el);
    }

    public XMLPanel getPanel(ExtendedAttributes el) {
        return generateStandardTablePanel(el, true, false);
    }

    public XMLPanel getPanel(ExtendedAttribute el) {
        return generateStandardGroupPanel(el, true, false);
    }

    public XMLPanel getPanel(ExternalPackage el) {
        return generateStandardGroupPanel(el, true, false);
    }

    public XMLPanel getPanel(ExternalPackages el) {
        return generateStandardListPanel(el, true, false);
    }

    public XMLPanel getPanel(ExternalReference el) {
        return generateStandardGroupPanel(el, true, false);
    }

    public XMLPanel getPanel(FinishMode el) {
        return getPanel(el.getStartFinishModes());
    }

    public XMLPanel getPanel(FormalParameter el) {
        XMLPanel p = null;
        List panelElements = new ArrayList();
        panelElements.add(el.get("Id"));
        panelElements.add(el.get("Mode"));
        if (panelElements.size() > 0) {
            p = new XMLGroupPanel(getPanelContainer(),
                    el,
                    panelElements,
                    getPanelContainer().getLanguageDependentString("FormalParameterKey"),
                    true,
                    false,
                    true);
        }
        return p;
    }

    public XMLPanel getPanel(FormalParameters el) {
        return generateStandardPanel(el);
    }

    public XMLPanel getPanel(Icon el) {
        List choices = Utils.getActivityIconNamesList();
        String choosen = el.toValue();
        if (choices.size() == 0) {
            return new XMLLocationPanel(getPanelContainer(), el, JaWEManager.getInstance().getJaWEController().canModifyElement(el));
        }
        if (!choices.contains(choosen)) {
            choices.add(choosen);
        }
        XMLComboPanel p = new XMLComboPanel(getPanelContainer(),
                el,
                JaWEManager.getInstance().getLabelGenerator().getLabel(el),
                choices,
                false,
                true,
                false,
                true,
                JaWEManager.getInstance().getJaWEController().canModifyElement(el),
                false,
                false);

        p.getComboBox().setRenderer(cbr);
        return p;
    }

    public XMLPanel getPanel(Implementation el) {
        return generateStandardPanel(el);
    }

    public XMLPanel getPanel(ImplementationTypes el) {
        return generateStandardPanel(el);
    }

    public XMLPanel getPanel(InitialValue el) {
        return generateStandardMultiLineTextPanel(el,
                true,
                XMLMultiLineTextPanel.SIZE_MEDIUM,
                false);
    }

    public XMLPanel getPanel(Join el) {
        return generateStandardGroupPanel(el, true, false);
    }

    public XMLPanel getPanel(Length el) {
        return generateStandardPanel(el);
    }

    public XMLPanel getPanel(Limit el) {
        return generateStandardPanel(el);
    }

    public XMLPanel getPanel(ListType el) {
        return generateStandardPanel(el);
    }

    public XMLPanel getPanel(Manual el) {
        return generateStandardPanel(el);
    }

    public XMLPanel getPanel(Member el) {
        return generateStandardPanel(el);
    }

    public XMLPanel getPanel(Namespace el) {
        return generateStandardPanel(el);
    }

    public XMLPanel getPanel(Namespaces el) {
        return generateStandardTablePanel(el, true, false);
    }

    public XMLPanel getPanel(No el) {
        return generateStandardPanel(el);
    }

    public XMLPanel getPanel(Package el) {
        List panels = new ArrayList();
        Set hidden = getHiddenElements("XMLGroupPanel", el);
        for (int i = 1;; i++) {
            try {
                XMLPanel p = getPanel(el, i, hidden);
                if (p != null) {
                    panels.add(p);
                }
            } catch (Exception ex) {
                break;
            }
        }

        if (panels.size() > 1) {
            return new XMLTabbedPanel(getPanelContainer(),
                    el,
                    panels,
                    JaWEManager.getInstance().getLabelGenerator().getLabel(el),
                    false);
        } else if (panels.size() == 1) {
            return (XMLPanel) panels.get(0);
        } else {
            return new XMLBasicPanel();
        }

    }

    public XMLPanel getBasicPanel(Package el) {
        List panels = new ArrayList();
        Set hidden = getHiddenElements("XMLGroupPanel", el);
        for (int i = 1; i <= 3; i++) {
            try {
                XMLPanel p = getPanel(el, i, hidden);
                if (p != null) {
                    panels.add(p);
                }
            } catch (Exception ex) {
                break;
            }
        }

        if (panels.size() > 1) {
            return new XMLTabbedPanel(getPanelContainer(),
                    el,
                    panels,
                    JaWEManager.getInstance().getLabelGenerator().getLabel(el),
                    false);
        } else if (panels.size() == 1) {
            return (XMLPanel) panels.get(0);
        } else {
            return new XMLBasicPanel();
        }

    }

    //CUSTOM
    //Validate either is professional mode or basic mode
    protected XMLPanel getPanel(Package el, int no, Set hidden) {
        XMLPanel p = null;
        switch (no) {

            case 1:
                List panelElements = new ArrayList();
                if (!hidden.contains(el.get("Id"))) {
                    panelElements.add(el.get("Id"));
                }
                if (!hidden.contains(el.get("Name"))) {
                    panelElements.add(el.get("Name"));
                }
                if (!(hidden.contains(el.getExtendedAttributes()) || JaWE.BASIC_MODE)) {
                    panelElements.add(el.getExtendedAttributes());
                }
                if (panelElements.size() > 0) {
                    p = new XMLGroupPanel(getPanelContainer(),
                            el,
                            panelElements,
                            getPanelContainer().getLanguageDependentString("GeneralKey"),
                            true,
                            false,
                            true);
                }
                break;

            case 2:
                p = null;
                break;

            case 3:
                p = null;
                break;

            case 4:
                p = null;
                break;

            case 5:
                p = null;
                break;

            case 6:
                p = null;
                break;

            case 7:
                p = null;
                break;

            case 8:
                p = null;
                break;

            case 9:
                p = null;
                break;

            case 10:
                p = null;
                break;

            default:
                throw new RuntimeException();

        }
        return p;
    }
    //END CUSTOM

    public XMLPanel getPanel(PackageHeader el) {
        return generateStandardPanel(el);
    }

    public XMLPanel getPanel(Participant el) {
        XMLPanel p = null;
        List panelElements = new ArrayList();
        panelElements.add(el.get("Id"));
        panelElements.add(el.get("Name"));
        panelElements.add(el.get("ParticipantType"));
        if (panelElements.size() > 0) {
            p = new XMLGroupPanel(getPanelContainer(),
                    el,
                    panelElements,
                    getPanelContainer().getLanguageDependentString("ParticipantKey"),
                    true,
                    false,
                    true);
        }
        return p;
    }

    public XMLPanel getPanel(Participants el) {
        return generateStandardTablePanel(el, true, false);
    }

    public XMLPanel getPanel(ParticipantType el) {
        return new XMLRadioPanel(getPanelContainer(),
                el.getTypeAttribute(),
                getPanelContainer().getLanguageDependentString(el.getTypeAttribute().toName() + "Key"),
                true,
                true,
                false,
                JaWEManager.getInstance().getJaWEController().canModifyElement(el));
    }

    public XMLPanel getPanel(Performer el) {
        Activity act = XMLUtil.getActivity(el);
        int type = act.getActivityType();
        if (type == XPDLConstants.ACTIVITY_TYPE_NO || type == XPDLConstants.ACTIVITY_TYPE_TOOL) {
            SequencedHashMap choices = XMLUtil.getPossibleParticipants(XMLUtil.getWorkflowProcess(el),
                    JaWEManager.getInstance().getXPDLHandler());
            Object choosen = choices.get(el.toValue());
            if (choosen == null) {
                if (!el.toValue().equals("")) {
                    choosen = el.toValue();
                }
            }
            SpecialChoiceElement cc = new SpecialChoiceElement(el,
                    "",
                    new ArrayList(choices.values()),
                    choosen,
                    true,
                    "Id",
                    el.toName(),
                    el.isRequired());
            cc.setReadOnly(el.isReadOnly());

            return new XMLComboPanel(getPanelContainer(),
                    cc,
                    null,
                    false,
                    true,
                    false,
                    true,
                    JaWEManager.getInstance().getJaWEController().canModifyElement(el));

        }
        return new XMLTextPanel(getPanelContainer(),
                el,
                false,
                false,
                JaWEManager.getInstance().getJaWEController().canModifyElement(el));
    }

    public XMLPanel getPanel(Priority el) {
        return generateStandardPanel(el);
    }

    public XMLPanel getPanel(PriorityUnit el) {
        return generateStandardPanel(el);
    }

    public XMLPanel getPanel(ProcessHeader el) {
        return generateStandardPanel(el);
    }

    public XMLPanel getPanel(RecordType el) {
        return generateStandardListPanel(el, true, false);
        /*
         * XMLListPanel controlledPanel=new XMLListPanel(el,"",false,true,false) { public
         * boolean checkRequired () { if (el.isReadOnly() || (el.size()>0)) { return true; }
         * else {
         * XMLPanel.errorMessage(this.getDialog(),JaWEManager.getInstance().getLabelGenerator().getLabel(el),"",
         * getLanguageDependentString("ErrorTheListMustContainAtLeastOneElement"));
         * controlPanel.getComponent(1).requestFocus(); return false; } } };
         * controlPanel=new XMLListControlPanel(el,"",true,false,true); return new
         * XMLGroupPanel(el,new XMLPanel[]{
         * controlledPanel,controlPanel},JaWEManager.getInstance().getLabelGenerator().getLabel(el),XMLPanel.BOX_LAYOUT,
         * false,true);
         */
    }

    public XMLPanel getPanel(RedefinableHeader el) {
        // TODO
        return generateStandardPanel(el);
    }

    public XMLPanel getPanel(Responsible el) {
        SequencedHashMap choices = JaWEManager.getInstance().getXPDLUtils().getPossibleResponsibles((Responsibles) el.getParent(), el);
        Participant choosen = null;
        String pId = el.toValue();
        if (!pId.equals("")) {
            Iterator it = choices.values().iterator();
            while (it.hasNext()) {
                Participant p = (Participant) it.next();
                if (pId.equals(p.getId())) {
                    choosen = p;
                    break;
                }
            }
        }
        if (choosen != null) {
            choices.put(choosen.getId(), choosen);
        }

        SpecialChoiceElement cc = new SpecialChoiceElement(el,
                "",
                new ArrayList(choices.values()),
                choosen,
                false,
                "Id",
                el.toName(),
                el.isRequired());
        cc.setReadOnly(el.isReadOnly());

        return new XMLComboPanel(getPanelContainer(),
                cc,
                null,
                false,
                true,
                false,
                false,
                JaWEManager.getInstance().getJaWEController().canModifyElement(el));
    }

    public XMLPanel getPanel(Responsibles el) {
        return generateStandardListPanel(el, true, false);
    }

    public XMLPanel getPanel(Route el) {
        XMLPanel p = null;
        List panelElements = new ArrayList();
        panelElements.add(el.get("Id"));
        panelElements.add(el.get("Name"));
        TransitionRestrictions trs = ((Activity) el.getParent()).getTransitionRestrictions();
        TransitionRestriction tr = (TransitionRestriction) trs.get(0);
        panelElements.add(getPanel(tr));
        if (panelElements.size() > 0) {
            p = new XMLGroupPanel(getPanelContainer(),
                    el,
                    panelElements,
                    getPanelContainer().getLanguageDependentString("GeneralKey"),
                    true,
                    false,
                    true);
        }
        return p;
    }

    public XMLPanel getPanel(SchemaType el) {
        return generateStandardPanel(el);
    }

    public XMLPanel getPanel(Script el) {
        return generateStandardGroupPanel(el, false, false);
    }

    protected XMLPanel getPanel(Script el, boolean hasTitle) {
        return generateStandardGroupPanel(el, hasTitle, false);
    }

    public XMLPanel getPanel(SimulationInformation el) {
        return generateStandardPanel(el);
    }

    public XMLPanel getPanel(Split el) {
        return generateStandardGroupPanel(el, true, false);
    }

    public XMLPanel getPanel(StartFinishModes el) {
        return new XMLComboPanel(getPanelContainer(),
                el,
                null,
                false,
                true,
                false,
                false,
                JaWEManager.getInstance().getJaWEController().canModifyElement(el));
    }

    public XMLPanel getPanel(StartMode el) {
        return getPanel(el.getStartFinishModes());
    }

    public XMLPanel getPanel(SubFlow el) {
        Set hidden = getHiddenElements("XMLGroupPanel", el);
        List panelElements = new ArrayList();
        SequencedHashMap choices = XMLUtil.getPossibleSubflowProcesses(el,
                JaWEManager.getInstance().getXPDLHandler());
        Object choosen = choices.get(el.getId());
        if (choosen == null) {
            if (!el.getId().equals("")) {
                choosen = el.getId();
            }
        }
        SpecialChoiceElement cc = new SpecialChoiceElement(el.get("Id"),
                "",
                new ArrayList(choices.values()),
                choosen,
                true,
                "Id",
                "WorkflowProcess",
                true);
        cc.setReadOnly(el.get("Id").isReadOnly());

        final XMLComboPanel cp = new XMLComboPanel(getPanelContainer(),
                cc,
                null,
                false,
                true,
                false,
                true,
                JaWEManager.getInstance().getJaWEController().canModifyElement(el.get("Id")));

        if (!hidden.contains(el.get("Id"))) {
            panelElements.add(cp);
        }
        if (!hidden.contains(el.getExecutionAttribute())) {
            panelElements.add(el.getExecutionAttribute());
        }

        if (!hidden.contains(el.getActualParameters())) {
            FormalParameters fps = null;
            if (choosen instanceof WorkflowProcess) {
                fps = ((WorkflowProcess) choosen).getFormalParameters();
            }
            final XMLActualParametersPanel app = new XMLActualParametersPanel(getPanelContainer(),
                    el.getActualParameters(),
                    fps);
            panelElements.add(app);
            cp.getComboBox().addActionListener(new ActionListener() {

                public void actionPerformed(ActionEvent ae) {
                    Object sel = cp.getSelectedItem();
                    FormalParameters _fps = null;
                    if (sel instanceof WorkflowProcess) {
                        _fps = ((WorkflowProcess) sel).getFormalParameters();
                    }
                    app.setFormalParameters(_fps);
                    app.validate();
                }
            });
            cp.getComboBox().getEditor().getEditorComponent().addKeyListener(new KeyAdapter() {

                public void keyPressed(KeyEvent e) {
                    Object sel = cp.getSelectedItem();
                    FormalParameters _fps = null;
                    if (sel instanceof WorkflowProcess) {
                        _fps = ((WorkflowProcess) sel).getFormalParameters();
                    }
                    app.setFormalParameters(_fps);
                    app.validate();
                }
            });
            cp.getComboBox().addItemListener(new ItemListener() {

                public void itemStateChanged(ItemEvent e) {
                    Object sel = cp.getSelectedItem();
                    FormalParameters _fps = null;
                    if (sel instanceof WorkflowProcess) {
                        _fps = ((WorkflowProcess) sel).getFormalParameters();
                    }
                    app.setFormalParameters(_fps);
                    app.validate();
                }
            });

        }
        if (panelElements.size() > 0) {
            return new XMLGroupPanel(getPanelContainer(),
                    el,
                    panelElements,
                    getPanelContainer().getLanguageDependentString(el.toName() + "Key"),
                    true,
                    false,
                    true);
        }
        return null;
    }

    public XMLPanel getPanel(TimeEstimation el) {
        return generateStandardGroupPanel(el, false, false);
    }

    public XMLPanel getPanel(Tool el) {
        Set hidden = getHiddenElements("XMLGroupPanel", el);
        List panelElements = new ArrayList();
        SequencedHashMap choices = XMLUtil.getPossibleApplications(XMLUtil.getWorkflowProcess(el),
                JaWEManager.getInstance().getXPDLHandler());
        Object choosen = choices.get(el.getId());
        if (choosen == null) {
            if (!el.getId().equals("")) {
                choosen = el.getId();
            }
        }
        SpecialChoiceElement cc = new SpecialChoiceElement(el.get("Id"),
                "",
                new ArrayList(choices.values()),
                choosen,
                true,
                "Id",
                "Application",
                el.isRequired());
        cc.setReadOnly(el.get("Id").isReadOnly());

        final XMLComboPanel cp = new XMLComboPanel(getPanelContainer(),
                cc,
                null,
                false,
                true,
                false,
                false,
                JaWEManager.getInstance().getJaWEController().canModifyElement(el.get("Id")));

        if (!hidden.contains(el.get("Id"))) {
            panelElements.add(cp);
        }
        if (!hidden.contains(el.getTypeAttribute())) {
            panelElements.add(el.getTypeAttribute());
        }
        if (!hidden.contains(el.getActualParameters())) {
            FormalParameters fps = null;
            if (choosen instanceof Application) {
                fps = ((Application) choosen).getApplicationTypes().getFormalParameters();
            }
            final XMLActualParametersPanel app = new XMLActualParametersPanel(getPanelContainer(),
                    el.getActualParameters(),
                    fps);
            panelElements.add(app);
            ActionListener al = new ActionListener() {

                public void actionPerformed(ActionEvent ae) {
                    Object sel = cp.getSelectedItem();
                    FormalParameters _fps = null;
                    if (sel instanceof Application) {
                        _fps = ((Application) sel).getApplicationTypes().getFormalParameters();
                    }
                    app.setFormalParameters(_fps);
                }
            };
            cp.getComboBox().addActionListener(al);
        }
        if (!hidden.contains(el.get("Description"))) {
            panelElements.add(el.get("Description"));
        }
        if (!hidden.contains(el.getExtendedAttributes())) {
            panelElements.add(el.getExtendedAttributes());
        }
        if (panelElements.size() > 0) {
            return new XMLGroupPanel(getPanelContainer(),
                    el,
                    panelElements,
                    getPanelContainer().getLanguageDependentString(el.toName() + "Key"),
                    true,
                    false,
                    true);
        }
        return null;
    }

    public XMLPanel getPanel(Tools el) {
        return generateStandardTablePanel(el, true, false);
    }

    public XMLPanel getPanel(Transition el) {
        // CUSTOM: hide unused attributes
        Set hidden = getHiddenElements("XMLGroupPanel", el);
        List panelElements = new ArrayList();
        if (!hidden.contains(el.get("Name"))) {
            panelElements.add(el.get("Name"));
        }
        if (!hidden.contains(el.getCondition())) {
            panelElements.add(el.getCondition());
        }
        // END CUSTOM: hide unused attributes

        if (panelElements.size() > 0) {
            return new XMLTransitionPanel(getPanelContainer(),
                    el,
                    panelElements,
                    JaWEManager.getInstance().getLabelGenerator().getLabel(el),
                    true,
                    false,
                    true);
        }
        return new XMLBasicPanel();
    }

    public XMLPanel getPanel(TransitionRef el) {
        return generateStandardPanel(el);
    }

    public XMLPanel getPanel(TransitionRefs el) {
        return null;
    }

    public XMLPanel getPanel(TransitionRestriction el) {
        return generateStandardPanel(el);
    }

    public XMLPanel getPanel(TransitionRestrictions el) {
        return generateStandardPanel(el);
    }

    public XMLPanel getPanel(Transitions el) {
        return generateStandardTablePanel(el, true, false);
    }

    public XMLPanel getPanel(TypeDeclaration el) {

        return generateStandardPanel(el);
    }

    public XMLPanel getPanel(TypeDeclarations el) {
        return generateStandardPanel(el);
    }

    public XMLPanel getPanel(UnionType el) {
        return generateStandardListPanel(el, true, false);
    }

    public XMLPanel getPanel(ValidFrom el) {
        return generateStandardPanel(el);
    }

    public XMLPanel getPanel(ValidTo el) {
        return generateStandardPanel(el);
    }

    public XMLPanel getPanel(Vendor el) {
        return generateStandardPanel(el);
    }

    public XMLPanel getPanel(Version el) {
        return generateStandardPanel(el);
    }

    public XMLPanel getPanel(WaitingTime el) {
        return generateStandardPanel(el);
    }

    //CUSTOM
    public XMLPanel getPanel(WorkflowProcess el) {
        List panels = new ArrayList();
        Set hidden = getHiddenElements("XMLGroupPanel", el);
        for (int i = 1;; i++) {
            try {
                XMLPanel p = getPanel(el, i, hidden);
                if (p != null) {
                    panels.add(p);
                }
            } catch (Exception ex) {
                break;
            }
        }

        if (panels.size() > 1) {
            return new XMLTabbedPanel(getPanelContainer(),
                    el,
                    panels,
                    JaWEManager.getInstance().getLabelGenerator().getLabel(el),
                    false);
        } else if (panels.size() == 1) {
            return (XMLPanel) panels.get(0);
        } else {
            return new XMLBasicPanel();
        }
    }
    //END CUSTOM

    public XMLPanel getBasicPanel(WorkflowProcess el) {
        List panels = new ArrayList();
        Set hidden = getHiddenElements("XMLGroupPanel", el);
        for (int i = 1; i <= 3; i++) {
            try {
                XMLPanel p = getPanel(el, i, hidden);
                if (p != null) {
                    panels.add(p);
                }
            } catch (Exception ex) {
                break;
            }
        }

        if (panels.size() > 1) {
            return new XMLTabbedPanel(getPanelContainer(),
                    el,
                    panels,
                    JaWEManager.getInstance().getLabelGenerator().getLabel(el),
                    false);
        } else if (panels.size() == 1) {
            return (XMLPanel) panels.get(0);
        } else {
            return new XMLBasicPanel();
        }

    }

    //CUSTOM
    public XMLPanel getPanel(WorkflowProcess el, int no, Set hidden) {
        XMLPanel p = null;

        switch (no) {

            case 1:
                List panelElements = new ArrayList();
                if (!hidden.contains(el.get("Id"))) {
                    panelElements.add(el.get("Id"));
                }
                if (!hidden.contains(el.get("Name"))) {
                    panelElements.add(el.get("Name"));
                }
                panelElements.add(el.getProcessHeader().getDurationUnitAttribute());
                panelElements.add(el.getProcessHeader().get("Limit"));
                if (!hidden.contains(el.getDataFields())) {
                    panelElements.add(this.getPanel(el.getDataFields()));
                }
                if (panelElements.size() > 0) {
                    p = new XMLGroupPanel(getPanelContainer(),
                            el,
                            panelElements,
                            getPanelContainer().getLanguageDependentString("GeneralKey"),
                            true,
                            false,
                            true);
                }
                break;

            case 2:
                break;

            case 3:
                if (!(hidden.contains(el.getRedefinableHeader()) || JaWE.BASIC_MODE)) {
                    p = this.getPanel(el.getRedefinableHeader());
                }
                break;

            case 4:
                break;

            case 5:
                if (!(hidden.contains(el.getApplications()) || JaWE.BASIC_MODE)) {
                    p = this.getPanel(el.getApplications());
                }
                break;

            case 6:
                break;

            case 7:
                if (!(hidden.contains(el.getFormalParameters()))) {
                    p = this.getPanel(el.getFormalParameters());
                }
                break;

            case 8:
                break;

            case 9:
                if (!(hidden.contains(el.getTransitions()) || JaWE.BASIC_MODE)) {
                    p = this.getPanel(el.getTransitions());
                }
                break;

            case 10:
                if (!(hidden.contains(el.getActivitySets()) || JaWE.BASIC_MODE)) {
                    p = this.getPanel(el.getActivitySets());
                }
                break;

            default:
                throw new RuntimeException();

        }
        return p;
    }
    //END CUSTOM

    public XMLPanel getPanel(WorkflowProcesses el) {
        return generateStandardPanel(el);
    }

    public XMLPanel getPanel(WorkingTime el) {
        return generateStandardPanel(el);
    }

    public XMLPanel getPanel(XPDLVersion el) {
        return generateStandardPanel(el);
    }

    public XMLPanel getPanel(XMLAttribute el) {
        if (el.getParent() instanceof ExternalPackage && el.toName().equals("href")) {
            return new XMLLocationPanel(getPanelContainer(), el, JaWEManager.getInstance().getJaWEController().canModifyElement(el));
        }
        if (el.getParent() instanceof ExtendedAttribute) {
            if (el.toName().equals("Name")) {
                Set choices = JaWEManager.getInstance().getXPDLUtils().getAllExtendedAttributeNames((XMLComplexElement) el.getParent().getParent().getParent(),
                        JaWEManager.getInstance().getXPDLHandler());
                String choosen = el.toValue();
                choices.add(choosen);
                return new XMLComboPanel(getPanelContainer(),
                        el,
                        new ArrayList(choices),
                        false,
                        true,
                        false,
                        true,
                        JaWEManager.getInstance().getJaWEController().canModifyElement(el));
            }
            XMLElement holder = el.getParent().getParent().getParent();
            if (XMLUtil.getWorkflowProcess(holder) != null && (holder instanceof Activity || holder instanceof Transition || holder instanceof Tool || holder instanceof WorkflowProcess)) {
                return generateMultiLineTextPanel(el, "Value", false, true, XMLMultiLineTextPanel.SIZE_LARGE, false, JaWEManager.getInstance().getJaWEController().canModifyElement(el));
            } else if (holder instanceof Application && ((Application) holder).getApplicationTypes().getChoosen() instanceof FormalParameters) {
                return generateMultiLineTextPanel(el, "Value", false, true, XMLMultiLineTextPanel.SIZE_LARGE, false, JaWEManager.getInstance().getJaWEController().canModifyElement(el));
            } else {
                return generateMultiLineTextPanel(el, "Value", false, true, XMLMultiLineTextPanel.SIZE_LARGE, false, JaWEManager.getInstance().getJaWEController().canModifyElement(el));
            }
        }
        if (el.getParent() instanceof BlockActivity) {
            WorkflowProcess wp = XMLUtil.getWorkflowProcess(el);
            List choices = wp.getActivitySets().toElements();
            XMLElement choosen = wp.getActivitySet(el.toValue());
            SpecialChoiceElement cc = new SpecialChoiceElement(el,
                    "",
                    choices,
                    choosen,
                    true,
                    "Id",
                    "ActivitySet",
                    el.isRequired());
            cc.setReadOnly(el.isReadOnly());

            return new XMLComboPanel(getPanelContainer(),
                    cc,
                    null,
                    false,
                    true,
                    false,
                    false,
                    JaWEManager.getInstance().getJaWEController().canModifyElement(el));

        }
        if (el.toName().equalsIgnoreCase("From")) {
            return getPanelForFROMAttribute((Transition) el.getParent());
        }
        if (el.toName().equalsIgnoreCase("To")) {
            return getPanelForTOAttribute((Transition) el.getParent());
        }
        if (el.toName().equalsIgnoreCase("ObjectClassFilter")) {
            return new XMLComboPanel(getPanelContainer(),
                    el,
                    null,
                    true,
                    true,
                    false,
                    true,
                    true);

        }
        if (el.toName().equalsIgnoreCase("Password")) {
            return new XMLTextPanel(getPanelContainer(), el, false, true, true);
        }
        return generateStandardPanel(el);
    }

    public XMLPanel getPanel(XMLEmptyChoiceElement el) {
        return new XMLBasicPanel();
    }

    public XMLPanel getPanel(XMLComplexChoice el) {
        return generateStandardPanel(el);
    }

    public XMLPanel getPanel(XMLCollection el) {
        return generateStandardPanel(el);
    }

    public XMLPanel getPanel(XMLComplexElement el) {
        return generateStandardPanel(el);
    }

    public XMLPanel getPanel(XMLSimpleElement el) {
        return generateStandardPanel(el);
    }

    public XMLPanel getPanel(XMLElement el) {

        try {
            Class cl = el.getClass();
            Method m = null;
            try {
                m = this.getClass().getMethod("getPanel", new Class[]{
                            cl
                        });
            } catch (Exception ex) {
                if (!(cl == XMLSimpleElement.class || cl == XMLAttribute.class || cl == XMLComplexChoice.class || cl == XMLComplexElement.class || cl == XMLCollectionElement.class || cl == XMLCollection.class)) {
                    if (XMLComplexChoice.class.isAssignableFrom(cl)) {
                        cl = XMLComplexChoice.class;
                    } else if (XMLAttribute.class.isAssignableFrom(cl)) {
                        cl = XMLAttribute.class;
                    } else if (XMLSimpleElement.class.isAssignableFrom(cl)) {
                        cl = XMLSimpleElement.class;
                    } else if (XMLComplexElement.class.isAssignableFrom(cl)) {
                        cl = XMLComplexElement.class;
                    } else if (XMLCollection.class.isAssignableFrom(cl)) {
                        cl = XMLCollection.class;
                    }
                }
            }

            m = this.getClass().getMethod("getPanel", new Class[]{
                        cl
                    });
            return (XMLPanel) m.invoke(this, new Object[]{
                        el
                    });
        } catch (Throwable e) {
            e.printStackTrace();
        }

        return generateStandardPanel(el);
    }

    protected XMLPanel getPanelForFROMAttribute(Transition transition) {
        SequencedHashMap choices = JaWEManager.getInstance().getTransitionHandler().getPossibleSourceActivities(transition);

        String tFrom = transition.getFrom();

        Activity current = ((Activities) ((XMLCollectionElement) transition.getParent().getParent()).get("Activities")).getActivity(tFrom);
        if (current != null) {
            choices.put(current.getId(), current);
        }

        Activity choosen = null;
        if (!tFrom.equals("")) {
            choosen = (Activity) choices.get(tFrom);
        }

        XMLAttribute from = (XMLAttribute) transition.get("From");
        SpecialChoiceElement cc = new SpecialChoiceElement(from,
                "",
                new ArrayList(choices.values()),
                choosen,
                true,
                "Id",
                "From",
                from.isRequired());
        cc.setReadOnly(from.isReadOnly());
        return new XMLComboPanel(getPanelContainer(),
                cc,
                null,
                false,
                true,
                false,
                false,
                JaWEManager.getInstance().getJaWEController().canModifyElement(from));
    }

    protected XMLPanel getPanelForTOAttribute(Transition transition) {
        SequencedHashMap choices = JaWEManager.getInstance().getTransitionHandler().getPossibleTargetActivities(transition);
        String tTo = transition.getTo();

        Activity current = ((Activities) ((XMLCollectionElement) transition.getParent().getParent()).get("Activities")).getActivity(tTo);
        if (current != null) {
            choices.put(current.getId(), current);
        }

        Activity choosen = null;
        if (!tTo.equals("")) {
            choosen = (Activity) choices.get(tTo);
        }

        XMLAttribute to = (XMLAttribute) transition.get("To");
        SpecialChoiceElement cc = new SpecialChoiceElement(to,
                "",
                new ArrayList(choices.values()),
                choosen,
                true,
                "Id",
                "To",
                to.isRequired());
        cc.setReadOnly(to.isReadOnly());
        return new XMLComboPanel(getPanelContainer(),
                cc,
                null,
                false,
                true,
                false,
                false,
                JaWEManager.getInstance().getJaWEController().canModifyElement(to));
    }

    public XMLPanel generateStandardPanel(XMLElement el) {

        XMLPanel panel = null;
        if (el instanceof XMLSimpleElement) {
            panel = generateStandardTextPanel(el, false);
        } else if (el instanceof XMLAttribute) {
            List choices = ((XMLAttribute) el).getChoices();
            if (choices == null) {
                panel = generateStandardTextPanel(el, false);
            } else {
                panel = new XMLComboPanel(getPanelContainer(),
                        el,
                        null,
                        false,
                        true,
                        false,
                        false,
                        JaWEManager.getInstance().getJaWEController().canModifyElement(el));
            }

        } else if (el instanceof XMLComplexChoice) {
            panel = new XMLComboChoicePanel(getPanelContainer(), el, JaWEManager.getInstance().getJaWEController().canModifyElement(el));
        } else if (el instanceof XMLComplexElement) {
            panel = generateStandardGroupPanel((XMLComplexElement) el, false, true);
        } else if (el instanceof XMLCollection) {
            // CUSTOM: show standard list instead of table
            panel = generateStandardListPanel((XMLCollection) el, true, false);
            // END CUSTOM
        } else {
            panel = new XMLBasicPanel();
        }
        return panel;
    }

    protected XMLMultiLineTextPanel generateStandardMultiLineTextPanel(
            XMLElement el, boolean isVertical, int size, boolean wrapLines) {
        return new XMLMultiLineTextPanel(getPanelContainer(),
                el,
                isVertical,
                size,
                wrapLines,
                JaWEManager.getInstance().getJaWEController().canModifyElement(el));
    }

    protected XMLPanel generateMultiLineTextPanel(
            XMLElement el,
            String labelKey,
            boolean isFalseRequired,
            boolean isVertical,
            int type,
            boolean wrapLines,
            boolean isEnabled) {
        return new XMLMultiLineTextPanel(getPanelContainer(), el,
                labelKey,
                isFalseRequired,
                isVertical,
                type,
                wrapLines,
                isEnabled);
    }

    protected XMLTextPanel generateStandardTextPanel(XMLElement el, boolean isVertical) {
        return new XMLTextPanel(getPanelContainer(),
                el,
                isVertical,
                false,
                JaWEManager.getInstance().getJaWEController().canModifyElement(el));

    }

    protected XMLBasicTablePanel generateStandardTablePanel(XMLCollection cl,
            boolean hasTitle,
            boolean hasEmptyBorder) {
        List elementsToShow = cl.toElements();
        Set hidden = getHiddenElements("XMLTablePanel", cl);
        elementsToShow.removeAll(hidden);
        List columnsToShow = getColumnsToShow("XMLTablePanel", cl);
        boolean miniDim = false;
        if (cl instanceof ExtendedAttributes) {
            miniDim = true;
        }
        return new XMLBasicTablePanel((InlinePanel) getPanelContainer(),
                cl,
                columnsToShow,
                elementsToShow,
                JaWEManager.getInstance().getLabelGenerator().getLabel(cl) + ", " + (cl.size() - hidden.size()) + " " + getPanelContainer().getLanguageDependentString("ElementsKey"),
                true,
                false,
                false,
                miniDim,
                true,
                true);
    }

    protected XMLBasicListPanel generateStandardListPanel(XMLCollection cl, boolean hasTitle, boolean hasEmptyBorder) {
        List elementsToShow = cl.toElements();
        Set hidden = getHiddenElements("XMLListPanel", cl);
        elementsToShow.removeAll(hidden);
        return new XMLBasicListPanel(
                (InlinePanel) getPanelContainer(),
                cl,
                elementsToShow,
                JaWEManager.getInstance().getLabelGenerator().getLabel(cl) + ", " + (cl.size() - hidden.size()) + " " + getPanelContainer().getLanguageDependentString("ElementsKey"),
                true,
                false,
                true,
                false);
    }

    protected XMLGroupPanel generateStandardGroupPanel(XMLComplexElement cel, boolean hasTitle, boolean hasEmptyBorder) {
        Set hidden = getHiddenElements("XMLGroupPanel", cel);
        List toShow = new ArrayList(cel.toElements());
        toShow.removeAll(hidden);
        if (cel instanceof Condition) {
            toShow.add(generateMultiLineTextPanel(cel, "Xpression", false, true, XMLMultiLineTextPanel.SIZE_MEDIUM, false, JaWEManager.getInstance().getJaWEController().canModifyElement(cel)));
        } else if (cel instanceof Script && JaWE.BASIC_MODE) {
            Script script = (Script) cel;
            script.setType(Script.DEFAULT_TYPE);
            cel = (XMLComplexElement) script;
        } else if (cel instanceof SchemaType) {
            toShow.add(generateMultiLineTextPanel(cel, "ComplexContent", false, true, XMLMultiLineTextPanel.SIZE_LARGE, false, JaWEManager.getInstance().getJaWEController().canModifyElement(cel)));
        }
        return new XMLGroupPanel(getPanelContainer(), cel, toShow, JaWEManager.getInstance().getLabelGenerator().getLabel(cel), true, hasTitle, hasEmptyBorder);
    }

    protected Set getHiddenElements(String panelName, XMLComplexElement cel) {
        Set hidden = new HashSet();

        String hstr = getPanelContainer().getSettings().getSettingString("HideSubElements." + panelName + "." + cel.toName());

        String[] hstra = Utils.tokenize(hstr, " ");
        if (hstra != null) {
            for (int i = 0; i < hstra.length; i++) {
                XMLElement el = cel.get(hstra[i]);
                if (el != null) {
                    hidden.add(el);
                } else if (cel instanceof Package) {
                    Package pkg = (Package) cel;
                    if (hstra[i].equals(pkg.getNamespaces().toName())) {
                        hidden.add(pkg.getNamespaces());
                    }
                }
            }
        }
        return hidden;
    }

    protected Set getHiddenElements(String panelName, XMLCollection col) {
        Set hidden = new HashSet();
        String elAttr = getPanelContainer().getSettings().getSettingString(
                "HideElements." + panelName + "." + col.toName());
        String[] els = Utils.tokenize(elAttr, " ");
        for (int k = 0; k < els.length; k++) {
            String key = els[k];
            String hstr = getPanelContainer().getSettings().getSettingString(
                    "HideElements." + panelName + "." + col.toName() + "." + key);
            String[] hstra = Utils.tokenize(hstr, " ");
            if (hstra != null) {
                for (int i = 0; i < hstra.length; i++) {
                    if (hstra[i].equals("*")) {
                        hidden.addAll(col.toElements());
                        return hidden;
                    }
                    Iterator ci = col.toElements().iterator();
                    while (ci.hasNext()) {
                        XMLElement el = (XMLElement) ci.next();
                        if (key.equals("")) {
                            if (el.toValue().equals(hstra[i])) {
                                hidden.add(el);
                            }
                        } else {
                            if (el instanceof XMLComplexElement) {
                                XMLElement sel = ((XMLComplexElement) el).get(key);
                                if (sel != null) {
                                    if (sel.toValue().equals(hstra[i])) {
                                        hidden.add(el);
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
        return hidden;
    }

    protected List getColumnsToShow(String panelName, XMLCollection col) {
        XMLElement el = col.generateNewElement();
        List toShow = new ArrayList();
        if (el instanceof XMLComplexElement) {
            String hstr = getPanelContainer().getSettings().getSettingString("ShowColumns." + panelName + "." + col.toName());
            String[] hstra = Utils.tokenize(hstr, " ");
            if (hstra.length > 0) {
                toShow.addAll(Arrays.asList(hstra));
            } else {
                toShow.addAll(((XMLComplexElement) el).toElementMap().keySet());
            }
        }
        return toShow;
    }

    public Settings getSettings() {
        return getPanelContainer().getSettings();
    }
    protected IconCBoxRenderer cbr = new IconCBoxRenderer();

    class IconCBoxRenderer extends JLabel implements ListCellRenderer {

        public IconCBoxRenderer() {
            setOpaque(true);
        }

        /*
         * This method finds the image and text corresponding to the selected value and
         * returns the label, set up to display the text and image.
         */
        public Component getListCellRendererComponent(JList list,
                Object value,
                int index,
                boolean isSelected,
                boolean cellHasFocus) {
            // Get the selected index. (The index param isn't
            // always valid, so just use the value.)
            String iconLoc = value.toString();

            if (isSelected) {
                setBackground(list.getSelectionBackground());
                setForeground(list.getSelectionForeground());
            } else {
                setBackground(list.getBackground());
                setForeground(list.getForeground());
            }

            // Set the icon and text. If icon was null, say so.
            ImageIcon icon = (ImageIcon) Utils.getOriginalActivityIconsMap().get(iconLoc);
            setIcon(icon);
            setText(iconLoc);

            return this;
        }
    }
}
TOP

Related Classes of org.enhydra.jawe.base.panel.StandardPanelGenerator$IconCBoxRenderer

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.