JAL-1645 source formatting and organise imports
[jalview.git] / src / jalview / gui / JalviewChimeraBindingModel.java
1 package jalview.gui;
2
3 import jalview.api.AlignmentViewPanel;
4 import jalview.datamodel.PDBEntry;
5 import jalview.datamodel.SequenceI;
6 import jalview.ext.rbvi.chimera.JalviewChimeraBinding;
7 import jalview.structure.StructureSelectionManager;
8
9 public class JalviewChimeraBindingModel extends JalviewChimeraBinding
10 {
11   private ChimeraViewFrame cvf;
12
13   private FeatureRenderer fr = null;
14
15   public JalviewChimeraBindingModel(ChimeraViewFrame chimeraViewFrame,
16           StructureSelectionManager ssm, PDBEntry[] pdbentry,
17           SequenceI[][] sequenceIs, String[][] chains, String protocol)
18   {
19     super(ssm, pdbentry, sequenceIs, chains, protocol);
20     cvf = chimeraViewFrame;
21   }
22
23   @Override
24   public FeatureRenderer getFeatureRenderer(AlignmentViewPanel alignment)
25   {
26     AlignmentPanel ap = (alignment == null) ? cvf.getAlignmentPanel()
27             : (AlignmentPanel) alignment;
28     if (ap.av.isShowSequenceFeatures())
29     {
30       if (fr == null)
31       {
32         fr = (jalview.gui.FeatureRenderer) ap.cloneFeatureRenderer();
33       }
34       else
35       {
36         ap.updateFeatureRenderer(fr);
37       }
38     }
39
40     return fr;
41   }
42
43   @Override
44   public jalview.api.SequenceRenderer getSequenceRenderer(
45           AlignmentViewPanel alignment)
46   {
47     return new SequenceRenderer(((AlignmentPanel) alignment).av);
48   }
49
50   @Override
51   public void refreshGUI()
52   {
53     javax.swing.SwingUtilities.invokeLater(new Runnable()
54     {
55       public void run()
56       {
57         cvf.updateTitleAndMenus();
58         cvf.revalidate();
59       }
60     });
61   }
62
63   public void updateColours(Object source)
64   {
65     AlignmentPanel ap = (AlignmentPanel) source;
66     // ignore events from panels not used to colour this view
67     if (!cvf.isUsedforcolourby(ap))
68     {
69       return;
70     }
71     if (!isLoadingFromArchive())
72     {
73       colourBySequence(ap.av.isShowSequenceFeatures(), ap);
74     }
75   }
76
77   @Override
78   public void releaseReferences(Object svl)
79   {
80   }
81
82   @Override
83   protected void releaseUIResources()
84   {
85   }
86
87   @Override
88   public void refreshPdbEntries()
89   {
90   }
91
92   /**
93    * Send an asynchronous command to Chimera, in a new thread, optionally with
94    * an 'in progress' message in a progress bar somewhere
95    */
96   protected void sendAsynchronousCommand(final String command,
97           final String progressMsg)
98   {
99     Thread thread = new Thread(new Runnable()
100     {
101
102       @Override
103       public void run()
104       {
105         long stm = cvf.startProgressBar(progressMsg);
106         try
107         {
108           sendChimeraCommand(command, false);
109         } finally
110         {
111           cvf.stopProgressBar(null, stm);
112         }
113       }
114     });
115     thread.start();
116
117   }
118 }