Ignore:
Timestamp:
08/23/12 14:07:41 (12 years ago)
Author:
pharms
Message:
  • added reference to parent nodes to GUI elements
Location:
trunk/quest-core-events/src/main/java/de/ugoe/cs/quest/eventcore/guimodel
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • trunk/quest-core-events/src/main/java/de/ugoe/cs/quest/eventcore/guimodel/AbstractDefaultGUIElement.java

    r576 r603  
    2121    private IGUIElementSpec specification; 
    2222 
     23    /** the reference to the parent element */ 
     24    private IGUIElement parent; 
     25 
    2326    /** 
    2427     * <p> 
     
    2831     * @param specification 
    2932     */ 
    30     public AbstractDefaultGUIElement(IGUIElementSpec specification) { 
     33    public AbstractDefaultGUIElement(IGUIElementSpec specification, IGUIElement parent) { 
    3134        this.specification = specification; 
     35        this.parent = parent; 
    3236    } 
    3337 
     
    4246    } 
    4347 
     48    /* (non-Javadoc) 
     49     * @see de.ugoe.cs.quest.eventcore.guimodel.IGUIElement#getParent() 
     50     */ 
     51    @Override 
     52    public IGUIElement getParent() { 
     53        return parent; 
     54    } 
     55 
    4456    /* 
    4557     * (non-Javadoc) 
     
    4759     * @see GUIElement#equals(GUIElement) 
    4860     */ 
    49     public boolean equals(IGUIElement other) { 
    50         if (this == other) 
    51         { 
    52             return true; 
    53         } 
    54          
    55         if (!this.getClass().isInstance(other)) { 
    56             return false; 
    57         } 
    58          
    59         AbstractDefaultGUIElement otherElem = (AbstractDefaultGUIElement) other; 
    60          
    61         return 
    62             ((otherElem.specification == specification) || 
    63              ((specification != null) && specification.equals(otherElem.specification))); 
     61    public final boolean equals(Object other) { 
     62        // implement final, as GUI elments are all singletons and the equal only if they are the 
     63        // same object 
     64        return super.equals(other); 
     65    } 
     66 
     67    /* (non-Javadoc) 
     68     * @see java.lang.Object#hashCode() 
     69     */ 
     70    @Override 
     71    public final int hashCode() { 
     72        // implement final, as GUI elments are all singletons and the equal only if they are the 
     73        // same object 
     74        return super.hashCode(); 
    6475    } 
    6576 
  • trunk/quest-core-events/src/main/java/de/ugoe/cs/quest/eventcore/guimodel/GUIElementFactory.java

    r592 r603  
    8181     */ 
    8282    @Override 
    83     public IGUIElement instantiateGUIElement(IGUIElementSpec specification) 
     83    public IGUIElement instantiateGUIElement(IGUIElementSpec specification, IGUIElement parent) 
    8484        throws GUIModelConfigurationException 
    8585    { 
     
    100100                } 
    101101 
    102                 Class<?>[] parameterTypes = new Class<?>[1]; 
     102                Class<?>[] parameterTypes = new Class<?>[2]; 
    103103                parameterTypes[0] = specification.getClass(); 
    104  
    105                 guiElement = 
    106                     (IGUIElement) clazz.getConstructor(parameterTypes).newInstance(specification); 
     104                parameterTypes[1] = parent.getClass(); 
     105 
     106                guiElement = (IGUIElement) clazz.getConstructor(parameterTypes).newInstance 
     107                    (specification, parent); 
    107108 
    108109                return guiElement; 
     
    177178     * @return 
    178179     */ 
    179     private synchronized Properties getMappingsFromConfiguration() { 
     180    private synchronized Properties getMappingsFromConfiguration() 
     181        throws GUIModelConfigurationException 
     182    { 
    180183        if (mappingsFromConfiguration != null) { 
    181184            return mappingsFromConfiguration; 
     
    185188             
    186189            File mappingsFolder = new File("data/guimappings"); 
    187             for( File mappingsFile : mappingsFolder.listFiles()) { 
    188                 if(!mappingsFile.isDirectory() && mappingsFile.getName().startsWith("guimapping") && mappingsFile.getName().endsWith(".txt")) { 
    189                     InputStream inStream; 
    190                     try { 
    191                         inStream = new FileInputStream(mappingsFile); 
    192                         mappingsFromConfiguration.load(inStream); 
    193                         inStream.close(); 
    194                     } 
    195                     catch (FileNotFoundException e1) { 
    196                         // TODO Auto-generated catch block 
    197                         e1.printStackTrace(); 
    198                     } 
    199                     catch (IOException e) { 
    200                         Logger.getLogger(this.getClass().getName()).warning 
    201                             ("invalid GUI mappings files " + mappingsFile.getName()); 
     190            File[] children = mappingsFolder.listFiles(); 
     191             
     192            if (children != null) { 
     193                for (File mappingsFile : children) { 
     194                    if (!mappingsFile.isDirectory() && 
     195                        mappingsFile.getName().startsWith("guimapping") && 
     196                        mappingsFile.getName().endsWith(".txt")) 
     197                    { 
     198                        InputStream inStream; 
     199                        try { 
     200                            inStream = new FileInputStream(mappingsFile); 
     201                            mappingsFromConfiguration.load(inStream); 
     202                            inStream.close(); 
     203                        } 
     204                        catch (FileNotFoundException e) { 
     205                            throw new GUIModelConfigurationException 
     206                                ("could not read mapping configuration file " + mappingsFile, e); 
     207                        } 
     208                        catch (IOException e) { 
     209                            throw new GUIModelConfigurationException 
     210                                ("could not read mapping configuration file " + mappingsFile, e); 
     211                        } 
    202212                    } 
    203213                } 
    204214            } 
     215            else { 
     216                throw new GUIModelConfigurationException 
     217                    ("no GUI mappings file provided in folder " + mappingsFolder); 
     218            } 
    205219 
    206220            return mappingsFromConfiguration; 
  • trunk/quest-core-events/src/main/java/de/ugoe/cs/quest/eventcore/guimodel/GUIModel.java

    r593 r603  
    88 
    99import java.util.ArrayList; 
     10import java.util.LinkedList; 
    1011import java.util.List; 
    1112 
     
    4142        throws GUIModelException 
    4243    { 
    43         List<IGUIElementSpec> remainingPath = new ArrayList<IGUIElementSpec>(); 
     44        List<IGUIElementSpec> remainingPath = new LinkedList<IGUIElementSpec>(); 
    4445         
    4546        for (IGUIElementSpec spec : guiElementPath) 
     
    138139        // if we get here, the corresponding path does not exist yet. So create it 
    139140        if (matchingChildren.size() == 0) { 
    140             matchingChildren.add 
    141                 (parentNode.addChild 
    142                      (guiElementFactory.instantiateGUIElement(specToIntegrateElementFor))); 
     141            IGUIElement newElement = guiElementFactory.instantiateGUIElement 
     142                (specToIntegrateElementFor, parentNode.guiElement); 
     143             
     144            matchingChildren.add(parentNode.addChild(newElement)); 
    143145        } 
    144146        else if (matchingChildren.size() > 1) { 
  • trunk/quest-core-events/src/main/java/de/ugoe/cs/quest/eventcore/guimodel/IGUIElement.java

    r595 r603  
    3030     * TODO comment 
    3131     * </p> 
     32     */ 
     33    public IGUIElement getParent(); 
     34 
     35    /** 
     36     * <p> 
     37     * TODO comment 
     38     * </p> 
    3239     *   
    3340     * @param other 
    3441     * @return 
    3542     */ 
    36     public boolean equals(IGUIElement other); 
     43    public boolean equals(Object other); 
    3744 
    3845    /** 
  • trunk/quest-core-events/src/main/java/de/ugoe/cs/quest/eventcore/guimodel/IGUIElementFactory.java

    r596 r603  
    2424     * @return 
    2525     */ 
    26     public IGUIElement instantiateGUIElement(IGUIElementSpec specification) 
     26    public IGUIElement instantiateGUIElement(IGUIElementSpec specification, IGUIElement parent) 
    2727        throws GUIModelConfigurationException; 
    2828     
Note: See TracChangeset for help on using the changeset viewer.