1 5 package org.terracotta.dso.wizards; 6 7 import org.eclipse.core.resources.IFolder; 8 import org.eclipse.core.resources.IResource; 9 import org.eclipse.jdt.core.IJavaProject; 10 import org.eclipse.jface.wizard.WizardPage; 11 import org.eclipse.swt.SWT; 12 import org.eclipse.swt.events.SelectionAdapter; 13 import org.eclipse.swt.events.SelectionEvent; 14 import org.eclipse.swt.layout.GridData; 15 import org.eclipse.swt.layout.GridLayout; 16 import org.eclipse.swt.widgets.Button; 17 import org.eclipse.swt.widgets.Composite; 18 import org.eclipse.swt.widgets.Display; 19 import org.eclipse.swt.widgets.Group; 20 import org.eclipse.swt.widgets.Text; 21 import org.terracotta.dso.TcPlugin; 22 import org.terracotta.dso.editors.chooser.ProjectFileNavigator; 23 24 import java.awt.event.ActionEvent ; 25 import java.awt.event.ActionListener ; 26 27 import javax.swing.SwingUtilities ; 28 29 public class SetupWizardPage extends WizardPage { 30 private final Display m_display; 31 private IJavaProject m_javaProject; 32 private Text m_configPathField; 33 private Button m_configFileButton; 34 private ProjectFileNavigator m_fileNavigator; 35 private Text m_serverOptionsField; 36 private Button m_resetOptionsButton; 37 38 private static final String PAGE_NAME = "TCSetupWizardPage"; 39 40 private static final String PAGE_TITLE = "Terracotta Project Setup"; 41 42 private static final String PAGE_DESC = "Specify the location of your Terracotta domain configuration file and\n" 43 + "Terracotta server Java runtime options"; 44 45 private static final String DEFAULT_CONFIG_FILENAME = TcPlugin.DEFAULT_CONFIG_FILENAME; 46 private static final String DEFAULT_SERVER_OPTIONS = TcPlugin.DEFAULT_SERVER_OPTIONS; 47 48 public SetupWizardPage(IJavaProject project) { 49 super(PAGE_NAME); 50 51 m_display = Display.getCurrent(); 52 m_javaProject = project; 53 54 setTitle(PAGE_TITLE); 55 setDescription(PAGE_DESC); 56 } 57 58 public void createControl(Composite parent) { 59 final Composite topComp = new Composite(parent, SWT.NONE); 60 GridLayout gridLayout = new GridLayout(); 61 gridLayout.numColumns = 1; 62 gridLayout.makeColumnsEqualWidth = false; 63 topComp.setLayout(gridLayout); 64 topComp.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); 65 66 Group domainConfig = new Group(topComp, SWT.SHADOW_ETCHED_IN); 67 domainConfig.setText("Domain Configuration"); 68 gridLayout = new GridLayout(); 69 gridLayout.numColumns = 2; 70 domainConfig.setLayout(gridLayout); 71 domainConfig.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); 72 73 m_configPathField = new Text(domainConfig, SWT.SINGLE | SWT.BORDER); 74 m_configPathField.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); 75 m_configPathField.setText(DEFAULT_CONFIG_FILENAME); 76 77 m_configFileButton = new Button(domainConfig, SWT.PUSH); 78 m_configFileButton.setText(" Browse... "); 79 m_configFileButton.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_END)); 80 m_configFileButton.addSelectionListener(new SelectionAdapter() { 81 public void widgetSelected(SelectionEvent e) { 82 if (m_fileNavigator == null) { 83 m_fileNavigator = new ProjectFileNavigator(null, "xml"); 84 m_fileNavigator.setActionListener(new NavigatorListener()); 85 } 86 m_fileNavigator.init(m_javaProject.getProject()); 87 m_fileNavigator.center(); 88 m_display.asyncExec(new Runnable () { 89 public void run() { 90 m_fileNavigator.setVisible(true); 91 m_fileNavigator.toFront(); 92 m_fileNavigator.setAlwaysOnTop(true); 93 } 94 }); 95 } 96 }); 97 Group serverOptions = new Group(topComp, SWT.SHADOW_ETCHED_IN); 98 serverOptions.setText("Server Options"); 99 gridLayout = new GridLayout(); 100 gridLayout.numColumns = 2; 101 serverOptions.setLayout(gridLayout); 102 GridData gridData = new GridData(); 103 gridData.horizontalAlignment = GridData.FILL; 104 gridData.heightHint = 60; 105 serverOptions.setLayoutData(gridData); 106 107 m_serverOptionsField = new Text(serverOptions, SWT.MULTI | SWT.BORDER | SWT.V_SCROLL); 108 GridData gd = new GridData(GridData.FILL_BOTH); 109 m_serverOptionsField.setLayoutData(gd); 110 m_serverOptionsField.setText(DEFAULT_SERVER_OPTIONS); 111 112 m_resetOptionsButton = new Button(serverOptions, SWT.PUSH); 113 m_resetOptionsButton.setText(" Reset "); 114 m_resetOptionsButton.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_END | GridData.VERTICAL_ALIGN_BEGINNING)); 115 m_resetOptionsButton.addSelectionListener(new SelectionAdapter() { 116 public void widgetSelected(SelectionEvent e) { 117 m_serverOptionsField.setText(DEFAULT_SERVER_OPTIONS); 118 } 119 }); 120 setControl(topComp); 121 } 122 123 class NavigatorListener implements ActionListener { 124 public void actionPerformed(ActionEvent e) { 125 SwingUtilities.invokeLater(new Runnable () { 126 public void run() { 127 IResource member = m_fileNavigator.getSelectedMember(); 128 if (member != null) { 129 if (member instanceof IFolder) { 130 member = ((IFolder) member).getFile(DEFAULT_CONFIG_FILENAME); 131 } 132 final IResource finalMember = member; 133 m_display.asyncExec(new Runnable () { 134 public void run() { 135 m_configPathField.setText(finalMember.getProjectRelativePath().toString()); 136 } 137 }); 138 } 139 } 140 }); 141 } 142 } 143 144 public boolean isPageComplete() { 145 return true; 146 } 147 148 public boolean canFinish() { 149 return isPageComplete(); 150 } 151 152 public String getDomainConfigurationPath() { 153 return m_configPathField.getText(); 154 } 155 156 public String getServerOptions() { 157 return m_serverOptionsField.getText(); 158 } 159 } 160 | Popular Tags |