Changeset 3181


Ignore:
Timestamp:
09/19/07 13:57:37 (12 years ago)
Author:
curtis
Message:

Add ability to save and restore display projections from system clipboard.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/loci/apps/slim/SlimPlotter.java

    r3163 r3181  
    1515import jaolho.data.lma.implementations.JAMAMatrix; 
    1616import java.awt.*; 
     17import java.awt.datatransfer.*; 
    1718import java.awt.event.*; 
    1819import java.io.*; 
     
    120121  // fit parameters 
    121122  private float[][] tau; 
     123 
     124  // system clipboard helper 
     125  private TextTransfer clip = new TextTransfer(); 
     126 
     127  // menu items 
     128  private JMenuItem menuFileExit; 
     129  private JMenuItem menuViewSaveProj; 
     130  private JMenuItem menuViewLoadProj; 
    122131 
    123132  // GUI components for parameter dialog box 
     
    657666      intensityPane.add(iPlotPane); 
    658667 
     668      JMenuBar menubar = new JMenuBar(); 
     669      masterWindow.setJMenuBar(menubar); 
     670      JMenu menuFile = new JMenu("File"); 
     671      menubar.add(menuFile); 
     672      menuFileExit = new JMenuItem("Exit"); 
     673      menuFileExit.addActionListener(this); 
     674      menuFile.add(menuFileExit); 
     675 
     676      JMenu menuView = new JMenu("View"); 
     677      menubar.add(menuView); 
     678      menuViewSaveProj = new JMenuItem("Save projection to clipboard"); 
     679      menuViewSaveProj.addActionListener(this); 
     680      menuView.add(menuViewSaveProj); 
     681 
     682      menuViewLoadProj = new JMenuItem("Restore projection from clipboard"); 
     683      menuViewLoadProj.addActionListener(this); 
     684      menuView.add(menuViewLoadProj); 
     685 
    659686      setProgress(progress, 970); // estimate: 97% 
    660687      if (progress.isCanceled()) System.exit(0); 
     
    10601087  public void actionPerformed(ActionEvent e) { 
    10611088    Object src = e.getSource(); 
    1062     if (src == cToggle) { 
     1089    if (src == menuFileExit) System.exit(0); 
     1090    else if (src == menuViewSaveProj) { 
     1091      String save = decayPlot.getProjectionControl().getSaveString(); 
     1092      clip.setClipboardContents(save); 
     1093    } 
     1094    else if (src == menuViewLoadProj) { 
     1095      String save = clip.getClipboardContents(); 
     1096      if (save != null) { 
     1097        try { 
     1098          decayPlot.getProjectionControl().setSaveString(save); 
     1099        } 
     1100        catch (VisADException exc) { exc.printStackTrace(); } 
     1101        catch (RemoteException exc) { exc.printStackTrace(); } 
     1102      } 
     1103    } 
     1104    else if (src == cToggle) { 
    10631105      // toggle visibility of this channel 
    10641106      int c = cSlider.getValue() - 1; 
     
    11201162          DisplayImplJ3D.PERSPECTIVE_PROJECTION); 
    11211163      } 
    1122       catch (Exception exc) { exc.printStackTrace(); } 
     1164      catch (VisADException exc) { exc.printStackTrace(); } 
     1165      catch (RemoteException exc) { exc.printStackTrace(); } 
    11231166    } 
    11241167    else if (src == showData) decayRend.toggle(showData.isSelected()); 
     
    11261169    else if (src == showBox) { 
    11271170      try { decayPlot.getDisplayRenderer().setBoxOn(showBox.isSelected()); } 
    1128       catch (Exception exc) { exc.printStackTrace(); } 
     1171      catch (VisADException exc) { exc.printStackTrace(); } 
     1172      catch (RemoteException exc) { exc.printStackTrace(); } 
    11291173    } 
    11301174    else if (src == showScale) { 
     
    11331177        decayPlot.getGraphicsModeControl().setScaleEnable(scale); 
    11341178      } 
    1135       catch (Exception exc) { exc.printStackTrace(); } 
     1179      catch (VisADException exc) { exc.printStackTrace(); } 
     1180      catch (RemoteException exc) { exc.printStackTrace(); } 
    11361181    } 
    11371182    else if (src == showFit) { 
     
    12121257      int c = cSlider.getValue() - 1; 
    12131258      try { ac.setCurrent(c); } 
    1214       catch (Exception exc) { exc.printStackTrace(); } 
     1259      catch (VisADException exc) { exc.printStackTrace(); } 
     1260      catch (RemoteException exc) { exc.printStackTrace(); } 
    12151261      cToggle.removeActionListener(this); 
    12161262      cToggle.setSelected(cVisible[c]); 
     
    16731719        } 
    16741720      } 
    1675       catch (Exception exc) { exc.printStackTrace(); } 
     1721      catch (VisADException exc) { exc.printStackTrace(); } 
     1722      catch (RemoteException exc) { exc.printStackTrace(); } 
    16761723      setProgress(progress, ++p); 
    16771724      progress.close(); 
     
    17081755        decayPlot.reAutoScale(); 
    17091756      } 
    1710       catch (Exception exc) { exc.printStackTrace(); } 
     1757      catch (VisADException exc) { exc.printStackTrace(); } 
     1758      catch (RemoteException exc) { exc.printStackTrace(); } 
    17111759    } 
    17121760    decayPlot.enableAction(); 
     
    20022050  } 
    20032051 
     2052  /** 
     2053   * Helper class for clipboard interaction, stolen from 
     2054   * <a href="http://www.javapractices.com/Topic82.cjp">Java Practices</a>. 
     2055   */ 
     2056  public final class TextTransfer implements ClipboardOwner { 
     2057    public void setClipboardContents(String value) { 
     2058      Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard(); 
     2059      if (clipboard != null) { 
     2060        clipboard.setContents(new StringSelection(value), this); 
     2061      } 
     2062    } 
     2063 
     2064    public String getClipboardContents() { 
     2065      Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard(); 
     2066      if (clipboard == null) return null; 
     2067      String result = null; 
     2068      Transferable contents = clipboard.getContents(null); 
     2069      boolean hasTransferableText = contents != null && 
     2070        contents.isDataFlavorSupported(DataFlavor.stringFlavor); 
     2071      if (hasTransferableText) { 
     2072        try { 
     2073          result = (String) contents.getTransferData(DataFlavor.stringFlavor); 
     2074        } 
     2075        catch (UnsupportedFlavorException ex) { ex.printStackTrace(); } 
     2076        catch (IOException ex) { ex.printStackTrace(); } 
     2077      } 
     2078      return result; 
     2079    } 
     2080 
     2081    public void lostOwnership(Clipboard clipboard, Transferable contents) { } 
     2082  } 
     2083 
    20042084  // -- Main method -- 
    20052085 
Note: See TracChangeset for help on using the changeset viewer.