1 4 package org.terracotta.dso.wizards; 5 6 import java.awt.Frame ; 7 import java.awt.event.ActionEvent ; 8 import java.awt.event.ActionListener ; 9 import java.io.File ; 10 11 import javax.swing.JFileChooser ; 12 13 import org.eclipse.jface.wizard.WizardPage; 14 import org.eclipse.swt.SWT; 15 import org.eclipse.swt.awt.SWT_AWT; 16 import org.eclipse.swt.widgets.Composite; 17 18 import org.dijon.Button; 19 import org.dijon.Container; 20 import org.dijon.DictionaryResource; 21 import org.dijon.TextField; 22 23 import org.terracotta.dso.TcPlugin; 24 25 30 31 public class InstallWizardPage extends WizardPage { 32 private Frame m_frame; 33 private TextField m_installDirField; 34 private Button m_browseButton; 35 36 private static final String PAGE_NAME = "TerracottaInstallDirectoryWizardPage"; 37 private static final String PAGE_TITLE = "Specify Terracotta Installation Directory"; 38 private static final String PAGE_DESC = "Please specify the location of your Terracotta installation."; 39 40 public InstallWizardPage() { 41 super(PAGE_NAME); 42 43 setTitle(PAGE_TITLE); 44 setDescription(PAGE_DESC); 45 } 46 47 public void createControl(Composite parent) { 48 DictionaryResource topRes = TcPlugin.getDefault().getResources(); 49 Container panel = (Container)topRes.resolve("PropertyPanel"); 50 Composite composite = new Composite(parent, SWT.EMBEDDED); 51 52 m_frame = SWT_AWT.new_Frame(composite); 53 m_frame.add(panel); 54 55 m_installDirField = (TextField)panel.findComponent("TCInstallDirField"); 56 m_installDirField.addActionListener(new ActionListener () { 57 public void actionPerformed(ActionEvent ae) { 58 final File file = new File (m_installDirField.getText()); 59 60 getShell().getDisplay().asyncExec(new Runnable () { 61 public void run() { 62 String err = null; 63 64 if(!file.exists()) { 65 err = "Directory does not exist."; 66 } 67 68 setErrorMessage(err); 69 70 getContainer().updateMessage(); 71 getContainer().updateButtons(); 72 } 73 }); 74 } 75 }); 76 77 m_browseButton = (Button)panel.findComponent("BrowseButton"); 78 m_browseButton.addActionListener(new ActionListener () { 79 public void actionPerformed(ActionEvent ae) { 80 String title = "Browse for Terracotta installation"; 81 JFileChooser chooser = new JFileChooser (); 82 83 chooser.setDialogTitle(title); 84 chooser.setCurrentDirectory(new File (m_installDirField.getText())); 85 chooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY); 86 87 int returnVal = chooser.showOpenDialog(m_frame); 88 if(returnVal == JFileChooser.APPROVE_OPTION) { 89 File f = chooser.getSelectedFile(); 90 91 m_installDirField.setText(f.getAbsolutePath()); 92 } 93 94 getShell().getDisplay().asyncExec(new Runnable () { 95 public void run() { 96 getContainer().updateMessage(); 97 getContainer().updateButtons(); 98 } 99 }); 100 } 101 }); 102 103 setControl(composite); 104 } 105 106 public boolean isPageComplete() { 107 File file = new File (m_installDirField.getText()); 108 return file.exists() && file.isDirectory(); 109 } 110 111 public boolean canFinish() { 112 return isPageComplete(); 113 } 114 115 public String getInstallDir() { 116 return m_installDirField.getText(); 117 } 118 } 119 | Popular Tags |