Ignore:
Timestamp:
08/22/12 15:53:43 (12 years ago)
Author:
sherbold
Message:
  • rewrote create of GUI elements by the IGUIElementFactory implementations. We now do not require platform-specific GUI element factories. Instead, mappings files located in the folder data/guimappings that start with guimapping- and and with .txt are used to determine which classes in the GUI structure belong to which GUI elements.
Location:
trunk/quest-core-events/src/main/java/de/ugoe/cs/quest/eventcore/guimodel
Files:
2 edited

Legend:

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

    r576 r585  
    77package de.ugoe.cs.quest.eventcore.guimodel; 
    88 
     9import java.io.File; 
     10import java.io.FileInputStream; 
     11import java.io.FileNotFoundException; 
    912import java.io.IOException; 
    1013import java.io.InputStream; 
     
    1417import java.util.logging.Logger; 
    1518 
     19import de.ugoe.cs.util.console.Console; 
     20 
    1621/** 
    1722 * TODO comment 
     23 *  
     24 * TODO rename class to GUIElementFactory 
    1825 *  
    1926 * @version $Revision: $ $Date: 13.05.2012$ 
    2027 * @author 2012, last modified by $Author: patrick$ 
    2128 */ 
    22 public abstract class AbstractDefaultGUIElementFactory implements IGUIElementFactory { 
     29public class AbstractDefaultGUIElementFactory implements IGUIElementFactory { 
     30     
     31    /** */ 
     32    private static AbstractDefaultGUIElementFactory instance = new AbstractDefaultGUIElementFactory(); 
     33 
     34    /** 
     35     * TODO: comment 
     36     *  
     37     */ 
     38    private AbstractDefaultGUIElementFactory() { 
     39    } 
     40 
     41    /** 
     42     * TODO: comment 
     43     *  
     44     * @return 
     45     */ 
     46    public static synchronized AbstractDefaultGUIElementFactory getInstance() { 
     47        return instance; 
     48    } 
     49 
    2350     
    2451    /** */ 
     
    5380     * @throws GUIModelConfigurationException 
    5481     */ 
    55     protected IGUIElement instantiateGUIElementFromConfiguredMappings(IGUIElementSpec specification) 
    56         throws GUIModelConfigurationException 
    57     { 
     82    @Override 
     83    public IGUIElement instantiateGUIElement(IGUIElementSpec specification) { 
    5884        Properties mappings = getMappingsFromConfiguration(); 
     85        IGUIElement guiElement = null; 
    5986 
    6087        String className = mappings.getProperty(specification.getType()); 
     
    74101                parameterTypes[0] = specification.getClass(); 
    75102 
    76                 IGUIElement guiElement = 
     103                guiElement = 
    77104                    (IGUIElement) clazz.getConstructor(parameterTypes).newInstance(specification); 
    78105 
     
    136163            } 
    137164        } 
    138  
    139         return null; 
     165        if( guiElement==null ) { 
     166            Console.printerrln("could not find GUI element representing class " + specification.getType()); 
     167        } 
     168 
     169        return guiElement; 
    140170    } 
    141171 
     
    151181        else { 
    152182            mappingsFromConfiguration = new Properties(); 
    153  
    154             InputStream inStream = 
    155                 this.getClass().getClassLoader().getResourceAsStream("GUIElementMapping.txt"); 
    156  
    157             if (inStream != null) { 
    158                 try { 
    159                     mappingsFromConfiguration.load(inStream); 
     183             
     184            File mappingsFolder = new File("data/guimappings"); 
     185            for( File mappingsFile : mappingsFolder.listFiles()) { 
     186                if(!mappingsFile.isDirectory() && mappingsFile.getName().startsWith("guimapping") && mappingsFile.getName().endsWith(".txt")) { 
     187                    InputStream inStream; 
     188                    try { 
     189                        inStream = new FileInputStream(mappingsFile); 
     190                        mappingsFromConfiguration.load(inStream); 
     191                    } 
     192                    catch (FileNotFoundException e1) { 
     193                        // TODO Auto-generated catch block 
     194                        e1.printStackTrace(); 
     195                    } 
     196                    catch (IOException e) { 
     197                        Logger.getLogger(this.getClass().getName()).warning 
     198                            ("invalid GUI mappings files " + mappingsFile.getName()); 
     199                    } 
    160200                } 
    161                 catch (IOException e) { 
    162                     Logger.getLogger(this.getClass().getName()).warning 
    163                         ("could not load GUIElementMapping.txt from classpath, but this may be " + 
    164                          "intended"); 
    165                 } 
    166201            } 
    167202 
  • trunk/quest-core-events/src/main/java/de/ugoe/cs/quest/eventcore/guimodel/GUIModelException.java

    r545 r585  
    1212 * @author 2012, last modified by $Author: pharms$ 
    1313 */ 
    14 public class GUIModelException extends Exception { 
     14public class GUIModelException extends RuntimeException { 
    1515 
    1616    /**  */ 
Note: See TracChangeset for help on using the changeset viewer.