~andre-dau/jhelioviewer/welcome

« back to all changes in this revision

Viewing changes to jhv/src/org/helioviewer/jhv/gui/ViewchainFactory.java

  • Committer: Helge Dietert
  • Date: 2010-07-21 18:26:09 UTC
  • mfrom: (189.1.11 vsoIntegrated)
  • Revision ID: helge@clem.local-20100721182609-qfmi23gqm0wkmm7n
Integrated VSO Client

Show diffs side-by-side

added added

removed removed

Lines of Context:
180
180
     *            LayeredView.
181
181
     */
182
182
    public void addLayerToViewchainMain(ImageInfoView newLayer, View attachToViewchain) {
183
 
 
184
183
        if (newLayer == null || attachToViewchain == null)
185
184
            return;
186
185
 
187
186
        // Fetch LayeredView
188
187
        LayeredView layeredView = attachToViewchain.getAdapter(LayeredView.class);
189
188
 
190
 
        // wait until image is loaded
191
 
        while (newLayer.getAdapter(SubimageDataView.class).getSubimageData() == null) {
192
 
            try {
193
 
                Thread.sleep(100);
194
 
            } catch (InterruptedException e) {
195
 
                e.printStackTrace();
196
 
            }
197
 
 
198
 
        }
199
 
 
200
 
        // Get meta data
201
 
        MetaData metaData = null;
202
 
        HelioviewerMetaData hvMetaData = null;
203
 
        if (newLayer.getAdapter(MetaDataView.class) != null)
204
 
            metaData = newLayer.getAdapter(MetaDataView.class).getMetaData();
205
 
        if (metaData instanceof HelioviewerMetaData)
206
 
            hvMetaData = (HelioviewerMetaData) metaData;
207
 
 
208
 
        // Create list which manages all filter tabs
209
 
        FilterTabList tabList = new FilterTabList();
210
 
 
211
 
        // If MoviewView, add MoviePanel
212
 
        if (newLayer instanceof MovieView) {
213
 
            FilterTabPanelManager manager = new FilterTabPanelManager();
214
 
            manager.add(new MoviePanel((MovieView) newLayer));
215
 
            tabList.add(new FilterTab(FilterTabDescriptor.Type.DEFAULT_MOVIE, "Movie Controls", manager));
216
 
        }
217
 
 
218
 
        // Adjust Panel for basic functions
219
 
        JPanel adjustPanel = new JPanel();
220
 
        adjustPanel.setLayout(new BoxLayout(adjustPanel, BoxLayout.PAGE_AXIS));
221
 
 
222
 
        FilterTabPanelManager manager = new FilterTabPanelManager();
223
 
        manager.add(adjustPanel);
224
 
        tabList.add(new FilterTab(FilterTabDescriptor.Type.DEFAULT_FILTER, "Adjust Layer", manager));
225
 
 
226
 
        // If JP2View, add QualitiySlider
227
 
        if (newLayer instanceof JP2View) {
228
 
            adjustPanel.add(new QualitySlider((JP2View) newLayer));
229
 
        }
230
 
 
231
 
        // Add filter to view chain
232
 
        AbstractList<FilterContainer> filterContainerList = PluginManager.getSingeltonInstance().getFilterContainers(true);
233
 
        View nextView = newLayer;
234
 
 
235
 
        for (int i = filterContainerList.size() - 1; i >= 0; i--) {
236
 
            FilterContainer container = filterContainerList.get(i);
237
 
 
238
 
            FilterView filterView = viewFactory.createNewView(FilterView.class);
239
 
            filterView.setView(nextView);
240
 
 
241
 
            container.installFilter(filterView, tabList);
242
 
 
243
 
            if (filterView.getFilter() != null) {
244
 
                nextView = filterView;
245
 
            } else {
246
 
                filterView.setView(null);
247
 
            }
248
 
        }
249
 
 
250
 
        // Geometry
251
 
        if (hvMetaData != null) {
252
 
            if (hvMetaData instanceof HelioviewerOcculterMetaData || hvMetaData.getInstrument().equalsIgnoreCase("MDI")) {
253
 
 
254
 
                HelioviewerGeometryView geometryView = viewFactory.createNewView(HelioviewerGeometryView.class);
255
 
                geometryView.setView(nextView);
256
 
                nextView = geometryView;
257
 
            }
258
 
        }
259
 
 
260
 
        // Add layer
261
 
        layeredView.addLayer(nextView);
262
 
 
263
 
        // Add JTabbedPane
264
 
        JTabbedPane tabbedPane = new JTabbedPane();
265
 
 
266
 
        for (int i = 0; i < tabList.size(); i++) {
267
 
            FilterTab filterTab = tabList.get(i);
268
 
            tabbedPane.add(filterTab.getTitle(), filterTab.getPaneManager().createPanel());
269
 
        }
270
 
 
271
 
        ImageViewerGui.getSingletonInstance().getImageSelectorPanel().addLayer(nextView, tabbedPane);
 
189
        synchronized (layeredView) {
 
190
                // wait until image is loaded
 
191
                while (newLayer.getAdapter(SubimageDataView.class).getSubimageData() == null) {
 
192
                    try {
 
193
                        Thread.sleep(100);
 
194
                    } catch (InterruptedException e) {
 
195
                        e.printStackTrace();
 
196
                    }
 
197
        
 
198
                }
 
199
        
 
200
                // Get meta data
 
201
                MetaData metaData = null;
 
202
                HelioviewerMetaData hvMetaData = null;
 
203
                if (newLayer.getAdapter(MetaDataView.class) != null)
 
204
                    metaData = newLayer.getAdapter(MetaDataView.class).getMetaData();
 
205
                if (metaData instanceof HelioviewerMetaData)
 
206
                    hvMetaData = (HelioviewerMetaData) metaData;
 
207
        
 
208
                // Create list which manages all filter tabs
 
209
                FilterTabList tabList = new FilterTabList();
 
210
        
 
211
                // If MoviewView, add MoviePanel
 
212
                if (newLayer instanceof MovieView) {
 
213
                    FilterTabPanelManager manager = new FilterTabPanelManager();
 
214
                    manager.add(new MoviePanel((MovieView) newLayer));
 
215
                    tabList.add(new FilterTab(FilterTabDescriptor.Type.DEFAULT_MOVIE, "Movie Controls", manager));
 
216
                }
 
217
        
 
218
                // Adjust Panel for basic functions
 
219
                JPanel adjustPanel = new JPanel();
 
220
                adjustPanel.setLayout(new BoxLayout(adjustPanel, BoxLayout.PAGE_AXIS));
 
221
        
 
222
                FilterTabPanelManager manager = new FilterTabPanelManager();
 
223
                manager.add(adjustPanel);
 
224
                tabList.add(new FilterTab(FilterTabDescriptor.Type.DEFAULT_FILTER, "Adjust Layer", manager));
 
225
        
 
226
                // If JP2View, add QualitiySlider
 
227
                if (newLayer instanceof JP2View) {
 
228
                    adjustPanel.add(new QualitySlider((JP2View) newLayer));
 
229
                }
 
230
        
 
231
                // Add filter to view chain
 
232
                AbstractList<FilterContainer> filterContainerList = PluginManager.getSingeltonInstance().getFilterContainers(true);
 
233
                View nextView = newLayer;
 
234
        
 
235
                for (int i = filterContainerList.size() - 1; i >= 0; i--) {
 
236
                    FilterContainer container = filterContainerList.get(i);
 
237
        
 
238
                    FilterView filterView = viewFactory.createNewView(FilterView.class);
 
239
                    filterView.setView(nextView);
 
240
        
 
241
                    container.installFilter(filterView, tabList);
 
242
        
 
243
                    if (filterView.getFilter() != null) {
 
244
                        nextView = filterView;
 
245
                    } else {
 
246
                        filterView.setView(null);
 
247
                    }
 
248
                }
 
249
        
 
250
                // Geometry
 
251
                if (hvMetaData != null) {
 
252
                    if (hvMetaData instanceof HelioviewerOcculterMetaData || hvMetaData.getInstrument().equalsIgnoreCase("MDI")) {
 
253
        
 
254
                        HelioviewerGeometryView geometryView = viewFactory.createNewView(HelioviewerGeometryView.class);
 
255
                        geometryView.setView(nextView);
 
256
                        nextView = geometryView;
 
257
                    }
 
258
                }
 
259
        
 
260
                // Add layer
 
261
                layeredView.addLayer(nextView);
 
262
        
 
263
                // Add JTabbedPane
 
264
                JTabbedPane tabbedPane = new JTabbedPane();
 
265
        
 
266
                for (int i = 0; i < tabList.size(); i++) {
 
267
                    FilterTab filterTab = tabList.get(i);
 
268
                    tabbedPane.add(filterTab.getTitle(), filterTab.getPaneManager().createPanel());
 
269
                }
 
270
        
 
271
                ImageViewerGui.getSingletonInstance().getImageSelectorPanel().addLayer(nextView, tabbedPane);
 
272
        }
272
273
    }
273
274
 
274
275
    /**