182
182
public void addLayerToViewchainMain(ImageInfoView newLayer, View attachToViewchain) {
184
183
if (newLayer == null || attachToViewchain == null)
187
186
// Fetch LayeredView
188
187
LayeredView layeredView = attachToViewchain.getAdapter(LayeredView.class);
190
// wait until image is loaded
191
while (newLayer.getAdapter(SubimageDataView.class).getSubimageData() == null) {
194
} catch (InterruptedException e) {
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;
208
// Create list which manages all filter tabs
209
FilterTabList tabList = new FilterTabList();
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));
218
// Adjust Panel for basic functions
219
JPanel adjustPanel = new JPanel();
220
adjustPanel.setLayout(new BoxLayout(adjustPanel, BoxLayout.PAGE_AXIS));
222
FilterTabPanelManager manager = new FilterTabPanelManager();
223
manager.add(adjustPanel);
224
tabList.add(new FilterTab(FilterTabDescriptor.Type.DEFAULT_FILTER, "Adjust Layer", manager));
226
// If JP2View, add QualitiySlider
227
if (newLayer instanceof JP2View) {
228
adjustPanel.add(new QualitySlider((JP2View) newLayer));
231
// Add filter to view chain
232
AbstractList<FilterContainer> filterContainerList = PluginManager.getSingeltonInstance().getFilterContainers(true);
233
View nextView = newLayer;
235
for (int i = filterContainerList.size() - 1; i >= 0; i--) {
236
FilterContainer container = filterContainerList.get(i);
238
FilterView filterView = viewFactory.createNewView(FilterView.class);
239
filterView.setView(nextView);
241
container.installFilter(filterView, tabList);
243
if (filterView.getFilter() != null) {
244
nextView = filterView;
246
filterView.setView(null);
251
if (hvMetaData != null) {
252
if (hvMetaData instanceof HelioviewerOcculterMetaData || hvMetaData.getInstrument().equalsIgnoreCase("MDI")) {
254
HelioviewerGeometryView geometryView = viewFactory.createNewView(HelioviewerGeometryView.class);
255
geometryView.setView(nextView);
256
nextView = geometryView;
261
layeredView.addLayer(nextView);
264
JTabbedPane tabbedPane = new JTabbedPane();
266
for (int i = 0; i < tabList.size(); i++) {
267
FilterTab filterTab = tabList.get(i);
268
tabbedPane.add(filterTab.getTitle(), filterTab.getPaneManager().createPanel());
271
ImageViewerGui.getSingletonInstance().getImageSelectorPanel().addLayer(nextView, tabbedPane);
189
synchronized (layeredView) {
190
// wait until image is loaded
191
while (newLayer.getAdapter(SubimageDataView.class).getSubimageData() == null) {
194
} catch (InterruptedException e) {
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;
208
// Create list which manages all filter tabs
209
FilterTabList tabList = new FilterTabList();
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));
218
// Adjust Panel for basic functions
219
JPanel adjustPanel = new JPanel();
220
adjustPanel.setLayout(new BoxLayout(adjustPanel, BoxLayout.PAGE_AXIS));
222
FilterTabPanelManager manager = new FilterTabPanelManager();
223
manager.add(adjustPanel);
224
tabList.add(new FilterTab(FilterTabDescriptor.Type.DEFAULT_FILTER, "Adjust Layer", manager));
226
// If JP2View, add QualitiySlider
227
if (newLayer instanceof JP2View) {
228
adjustPanel.add(new QualitySlider((JP2View) newLayer));
231
// Add filter to view chain
232
AbstractList<FilterContainer> filterContainerList = PluginManager.getSingeltonInstance().getFilterContainers(true);
233
View nextView = newLayer;
235
for (int i = filterContainerList.size() - 1; i >= 0; i--) {
236
FilterContainer container = filterContainerList.get(i);
238
FilterView filterView = viewFactory.createNewView(FilterView.class);
239
filterView.setView(nextView);
241
container.installFilter(filterView, tabList);
243
if (filterView.getFilter() != null) {
244
nextView = filterView;
246
filterView.setView(null);
251
if (hvMetaData != null) {
252
if (hvMetaData instanceof HelioviewerOcculterMetaData || hvMetaData.getInstrument().equalsIgnoreCase("MDI")) {
254
HelioviewerGeometryView geometryView = viewFactory.createNewView(HelioviewerGeometryView.class);
255
geometryView.setView(nextView);
256
nextView = geometryView;
261
layeredView.addLayer(nextView);
264
JTabbedPane tabbedPane = new JTabbedPane();
266
for (int i = 0; i < tabList.size(); i++) {
267
FilterTab filterTab = tabList.get(i);
268
tabbedPane.add(filterTab.getTitle(), filterTab.getPaneManager().createPanel());
271
ImageViewerGui.getSingletonInstance().getImageSelectorPanel().addLayer(nextView, tabbedPane);