jmol update
[jalview.git] / src / jalview / appletgui / AppletJmolBinding.java
1 /**
2  * 
3  */
4 package jalview.appletgui;
5
6 import java.awt.Container;
7 import java.util.BitSet;
8
9 import jalview.datamodel.PDBEntry;
10 import jalview.datamodel.SequenceI;
11
12 import org.jmol.api.JmolAppConsoleInterface;
13 import org.jmol.api.JmolViewer;
14 import org.jmol.applet.AppletConsole;
15 import org.jmol.popup.JmolPopup;
16
17 class AppletJmolBinding extends jalview.ext.jmol.JalviewJmolBinding
18 {
19
20   /**
21    * Window that contains the bound Jmol instance
22    */
23   private AppletJmol appletJmolBinding;
24
25   public AppletJmolBinding(AppletJmol appletJmol, PDBEntry[] pdbentry, SequenceI[][] seq,
26           String[][] chains, String protocol)
27   {
28     super(pdbentry, seq, chains, protocol);
29     appletJmolBinding = appletJmol;
30   }
31
32   public jalview.api.FeatureRenderer getFeatureRenderer()
33   {
34     if (appletJmolBinding.ap.av.showSequenceFeatures)
35     {
36       if (appletJmolBinding.fr == null)
37       {
38         appletJmolBinding.fr = new jalview.appletgui.FeatureRenderer(appletJmolBinding.ap.av);
39       }
40
41       appletJmolBinding.fr.transferSettings(appletJmolBinding.ap.seqPanel.seqCanvas.getFeatureRenderer());
42     }
43
44     return appletJmolBinding.fr;
45   }
46
47   public jalview.api.SequenceRenderer getSequenceRenderer()
48   {
49     return new SequenceRenderer(appletJmolBinding.ap.av);
50   }
51
52   public void sendConsoleEcho(String strEcho)
53   {
54     if (appletJmolBinding.scriptWindow == null)
55       appletJmolBinding.showConsole(true);
56
57     appletJmolBinding.history.append("\n" + strEcho);
58   }
59
60   public void sendConsoleMessage(String strStatus)
61   {
62     if (appletJmolBinding.history != null && strStatus != null
63             && !strStatus.equals("Script completed"))
64     {
65       appletJmolBinding.history.append("\n" + strStatus);
66     }
67   }
68
69   public void showUrl(String url, String target)
70   {
71     appletJmolBinding.ap.alignFrame.showURL(url, target);
72
73   }
74
75   public void refreshGUI()
76   {
77     appletJmolBinding.updateTitleAndMenus();
78   }
79   
80   public void updateColours(Object source)
81   {
82     AlignmentPanel ap = (AlignmentPanel) source;
83     colourBySequence(ap.av.getShowSequenceFeatures(), ap.av.alignment);
84   }
85
86   public void showUrl(String url)
87   {
88     try
89     {
90       appletJmolBinding.ap.av.applet.getAppletContext().showDocument(new java.net.URL(url),
91               "jmol");
92     } catch (java.net.MalformedURLException ex)
93     {
94     }
95   }
96
97   public void newJmolPopup(boolean translateLocale, String menuName, boolean asPopup)
98   {
99     
100     jmolpopup = JmolPopup.newJmolPopup(viewer,translateLocale, menuName,asPopup);
101   }
102
103   public void notifyScriptTermination(String strStatus, int msWalltime)
104   {
105     // do nothing.
106   }
107
108   public void selectionChanged(BitSet arg0)
109   {
110     // TODO Auto-generated method stub
111     
112   }
113
114   public void refreshPdbEntries()
115   {
116     // TODO Auto-generated method stub
117     
118   }
119
120   @Override
121   public void showConsole(boolean show)
122   {
123     appletJmolBinding.showConsole(show);
124   }
125
126   @Override
127   protected JmolAppConsoleInterface createJmolConsole(JmolViewer viewer2,
128           Container consolePanel, String buttonsToShow)
129   {
130     return new AppletConsole(viewer2, consolePanel);
131   }
132   @Override
133   protected void releaseUIResources()
134   {
135     appletJmolBinding = null;
136     if (console!=null) {
137       try {
138         console.setVisible(false);
139       } catch (Error e) {} catch (Exception x) {};
140       console=null;
141     }
142     
143   }
144
145 }