+ * Builds a drop-down choice list of existing structure viewers to which new
+ * structures may be added. If this list is empty then it, and the 'Add'
+ * button, are hidden.
+ */
+ protected void discoverStructureViews()
+ {
+ Desktop desktop = Desktop.getInstance();
+ if (desktop != null)
+ {
+ targetView.removeAllItems();
+ if (desktop.lastTargetedView != null
+ && !desktop.lastTargetedView.isVisible())
+ {
+ desktop.lastTargetedView = null;
+ }
+ int linkedViewsAt = 0;
+ for (StructureViewerBase view : desktop
+ .getStructureViewers(null, null))
+ {
+ StructureViewer viewHandler = (desktop.lastTargetedView != null
+ && desktop.lastTargetedView.sview == view)
+ ? desktop.lastTargetedView
+ : StructureViewer.reconfigure(view);
+
+ if (view.isLinkedWith(ap))
+ {
+ targetView.insertItemAt(viewHandler,
+ linkedViewsAt++);
+ }
+ else
+ {
+ targetView.addItem(viewHandler);
+ }
+ }
+
+ /*
+ * show option to Add to viewer if at least 1 viewer found
+ */
+ targetView.setVisible(false);
+ if (targetView.getItemCount() > 0)
+ {
+ targetView.setVisible(true);
+ if (desktop.lastTargetedView != null)
+ {
+ targetView.setSelectedItem(desktop.lastTargetedView);
+ }
+ else
+ {
+ targetView.setSelectedIndex(0);
+ }
+ }
+ btn_add.setVisible(targetView.isVisible());
+ }
+ }
+
+ /**