001    package nl.cwi.sen1.visplugin.graphplugin;
002    
003    import nl.cwi.sen1.visplugin.VisualizationPluginController;
004    import nl.cwi.sen1.visplugin.VisualizationPluginWindow;
005    import aterm.ATerm;
006    
007    /**
008     * Graph Plugin Visualisation Controller. Controller for the graph
009     * window.
010     *
011     * @author A. Belgraver
012     * @author Anton Gerdessen (reviewer)
013     * @date 07-3-2007 
014     */
015    public class GraphVisualizationController extends
016            VisualizationPluginController {
017    
018        private final String m_pluginName = "Graph";
019        
020        /**
021         * @todo Needs better implementation needs to be resolved reflection, dynamic 
022         * dispatch... in a the base or utility class for all plugins, remark by Anton G.
023         */
024        private final String m_relationGraph = "relation([str,str])";
025        private final String m_relationGraphTuple = "relation([tuple([str,loc]),tuple([str,loc])])";
026        private final String m_attributedGraphTuple = "relation([tuple([str,relation([str,str])]),str])";
027    
028        /**
029         * Constructor.
030         * 
031         * @author R. van Remortel
032         * @author Anton Gerdessen (reviewer)
033         * @date 07-3-2007 
034         */
035        public GraphVisualizationController() {
036            super();
037        }
038    
039        /**
040         * Creates a VisualizationWindow.
041         * 
042         * @author A. Belgraver
043         * @author Anton Gerdessen (reviewer)
044         * @date 07-3-2007 
045         */
046        public VisualizationPluginWindow createWindow() {
047            return new GraphVisualizationWindow();
048        }
049    
050        /**
051         * Creates a VisualizationWindow.
052         * 
053         * @return Name of this plugin
054         * @author A. Belgraver
055         * @author Anton Gerdessen (reviewer)
056         * @date 07-3-2007 
057         */
058        public String getPluginName() {
059            return m_pluginName;
060        }
061    
062        /**
063         * Returns array holding the types supported by this plugin.
064         * 
065         * @return Array of supported ATerms
066         * @author A. Belgraver
067         * @author Anton Gerdessen (reviewer)
068         * @date 07-3-2007 
069         */
070        public ATerm[] getSupportedTypes() {
071            ATerm[] atermList = { makeATerm(m_relationGraph), makeATerm(m_relationGraphTuple), makeATerm(m_attributedGraphTuple) };
072            return atermList;
073        }
074    
075        /**
076         * Creates an Aterm based on a String.
077         * 
078         * @return ATerms created from String
079         * @author A. Belgraver
080         * @author Anton Gerdessen (reviewer)
081         * @date 07-3-2007 
082         */
083        private ATerm makeATerm(String type) {
084            return m_factory.RTypeFromString(type);
085        }
086    
087    }