Changes between Version 4 and Version 5 of UTGBCore/CreateYourOwnTrack


Ignore:
Timestamp:
10/12/07 21:58:31 (18 years ago)
Author:
leo
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • UTGBCore/CreateYourOwnTrack

    v4 v5  
    22
    33= How to create your own track =
     4 
     5 * An example track:
     6{{{
     7/**
     8 * A simple wrapper for old UTGB tracks
     9 *
     10 * @author leo
     11 *
     12 */
     13public class LegacyTrack extends TrackBase
     14{
     15    private DockPanel _panel = new DockPanel();
     16    private Image trackImage = new Image();
     17    private LegacyTrackInfo _legacyTrackInfo;
     18    private TrackConfig _config = new TrackConfig(this);
     19    private int offset = 0;
     20
     21    public static TrackFactory factory()
     22    {
     23        return new TrackFactory(){
     24            public Track newInstance()
     25            {
     26                return new LegacyTrack();
     27            }
     28        };
     29    }
     30   
     31    public LegacyTrack()
     32    {
     33        this(new LegacyTrackInfo());
     34    }
     35   
     36    public LegacyTrack(LegacyTrackInfo trackInfo)
     37    {
     38        super(trackInfo.getName());
     39        this._legacyTrackInfo = trackInfo;
     40        _panel.add(trackImage, DockPanel.CENTER);
     41    }
     42
     43    public int getDefaultWindowHeight()
     44    {
     45        return 100;
     46    }
     47
     48
     49    public Widget getWidget()
     50    {
     51        return _panel;
     52    }
     53
     54    public void onChangeTrackWindow(TrackWindow newWindow)
     55    {
     56        _legacyTrackInfo.setStart(newWindow.getStartOnGenome());
     57        _legacyTrackInfo.setEnd(newWindow.getEndOnGenome());
     58       
     59        draw();
     60    }
     61
     62    public void draw()
     63    {
     64        int windowSize = getTrackGroup().getTrackWindow().getWindowWidth();
     65        _legacyTrackInfo.setWidth(windowSize);
     66
     67        String imageUrl = _legacyTrackInfo.getImageURL(offset);
     68        trackImage.setUrl(imageUrl);
     69    }
     70
     71
     72    public void onChangeTrackGroupProperty(TrackGroupPropertyChange change)
     73    {
     74        String[] relatedProperty = {"species", "revision", "target"};
     75       
     76        if(!change.containsOneOf(relatedProperty))
     77            return; // no related change
     78       
     79        String species = change.getProperty("species", _legacyTrackInfo.getSpecies());
     80        String revision = change.getProperty("revision", _legacyTrackInfo.getRevision());
     81        String target = change.getProperty("target", _legacyTrackInfo.getTarget());
     82       
     83        _legacyTrackInfo.setSpecies(species);
     84        _legacyTrackInfo.setRevision(revision);
     85        _legacyTrackInfo.setTarget(target);
     86       
     87        // sync with the configuration panel
     88        _config.setParameter("species", species);
     89        _config.setParameter("revision", revision);
     90        _config.setParameter("target", target);
     91       
     92        draw();
     93    }
     94
     95    public void setUp(TrackFrame trackFrame, TrackGroup group)
     96    {
     97        trackFrame.pack();
     98
     99        TrackWindow w = group.getTrackWindow();
     100        _legacyTrackInfo.setStart(w.getStartOnGenome());
     101        _legacyTrackInfo.setEnd(w.getEndOnGenome());
     102       
     103        trackImage.addLoadListener(new LoadListener() {
     104            public void onError(Widget sender)
     105            {
     106                trackImage.setUrl(Design.IMAGE_NOT_AVAILABLE);
     107            }
     108
     109            public void onLoad(Widget sender)
     110            {
     111                getFrame().onUpdateTrackWidget();
     112            }}
     113        );
     114       
     115        // set up the configuration panel
     116        _config.addConfigParameter("Track Name", new StringType("name"), _legacyTrackInfo.getName());
     117        _config.addConfigParameter("Track Image URL", new StringType("baseURL"), _legacyTrackInfo.getBaseURL());
     118        _config.addConfigParameter("Species", new StringType("species"), _legacyTrackInfo.getSpecies());
     119        _config.addConfigParameter("Revision", new StringType("revision"), _legacyTrackInfo.getRevision());
     120        _config.addConfigParameter("Target", new StringType("target"), _legacyTrackInfo.getTarget());
     121        _config.addConfigParameter("Offset", new IntegerType("offset"), Integer.toString(offset));
     122
     123    }   
     124
     125        public TrackConfig getConfig() {
     126                return _config;
     127        }
     128
     129       
     130
     131        public void restoreProperties(Properties properties) {
     132                _legacyTrackInfo.setBaseURL(properties.get("baseURL", _legacyTrackInfo.getBaseURL()));
     133                _legacyTrackInfo.setSpecies(properties.get("species", _legacyTrackInfo.getSpecies()));
     134                _legacyTrackInfo.setRevision(properties.get("revision", _legacyTrackInfo.getRevision()));
     135                _legacyTrackInfo.setTarget(properties.get("target", _legacyTrackInfo.getTarget()));
     136                offset = properties.getInt("offset", offset);
     137        }
     138
     139        public void saveProperties(Properties saveData) {
     140                saveData.add("baseURL", _legacyTrackInfo.getBaseURL());
     141                saveData.add("species", _legacyTrackInfo.getSpecies());
     142                saveData.add("revision", _legacyTrackInfo.getRevision());
     143                saveData.add("target", _legacyTrackInfo.getTarget());
     144                saveData.add("offset", offset);
     145        }
     146
     147        public void onChangeTrackConfig(TrackConfigChange change) {
     148                if(change.contains("name"))
     149                        getTrackInfo().setTrackName(change.getValue("name"));
     150               
     151                boolean drawFlag = false;
     152                if(change.contains("offset"))
     153                {
     154                        offset = change.getIntValue("offset");
     155                        drawFlag = true;
     156                }
     157               
     158                String[] param = {"baseURL", "species", "revision", "target"};
     159                if(change.containsOneOf(param))
     160                {
     161                        _legacyTrackInfo.setBaseURL(change.getValue("baseURL"));
     162                        _legacyTrackInfo.setSpecies(change.getValue("species"));
     163                        _legacyTrackInfo.setRevision(change.getValue("revision"));
     164                        _legacyTrackInfo.setTarget(change.getValue("target"));
     165                        drawFlag =  true;
     166                }
     167               
     168                if(drawFlag)
     169                        draw();
     170
     171        }
     172   
     173}
     174}}}
    4175
    5176 * Extend TrackBase class
    6   * implements factory() method
    7 
    8  * In Eclipse, run TrackLoaderGenerator (launch file is located at eclipse/TrackLoaderGenerator.launch)
     177  * Implement factory() method
     178{{{
     179    public static TrackFactory factory()
     180    {
     181        return new TrackFactory(){
     182            public Track newInstance()
     183            {
     184                return new LegacyTrack();
     185            }
     186        };
     187    }
     188}}}
     189
     190  * Implement getWidget() method
     191   * The returned widget is used to display track content
     192
     193  * Set the default size of your track
     194   * via getDefaultHight() method (pixel size)
     195
     196   
     197
     198 * Edit the TrackFactorySetup class as as to this class can instantiate your Track class.
     199   * In Eclipse, run TrackLoaderGenerator (launch file is located at eclipse/TrackLoaderGenerator.launch) does this task.
     200
     201