1 19 20 package org.netbeans.bluej; 21 22 import java.io.File ; 23 import java.io.IOException ; 24 import java.net.MalformedURLException ; 25 import java.net.URL ; 26 import java.util.HashMap ; 27 import java.util.HashSet ; 28 import java.util.Iterator ; 29 import java.util.List ; 30 import java.util.Properties ; 31 import java.util.Set ; 32 import java.util.Vector ; 33 import javax.swing.ButtonModel ; 34 import javax.swing.ComboBoxModel ; 35 import javax.swing.DefaultListModel ; 36 import javax.swing.JButton ; 37 import javax.swing.JToggleButton ; 38 import javax.swing.ListCellRenderer ; 39 import javax.swing.table.DefaultTableModel ; 40 import javax.swing.text.BadLocationException ; 41 import javax.swing.text.Document ; 42 import org.netbeans.api.project.ProjectManager; 43 import org.netbeans.api.queries.CollocationQuery; 44 import org.netbeans.spi.project.support.ant.AntProjectHelper; 45 import org.netbeans.spi.project.support.ant.EditableProperties; 46 import org.netbeans.spi.project.support.ant.GeneratedFilesHelper; 47 import org.netbeans.spi.project.support.ant.PropertyEvaluator; 48 import org.netbeans.spi.project.support.ant.PropertyUtils; 49 import org.netbeans.spi.project.support.ant.ReferenceHelper; 50 import org.netbeans.spi.project.support.ant.ui.StoreGroup; 51 import org.openide.DialogDisplayer; 52 import org.openide.ErrorManager; 53 import org.openide.NotifyDescriptor; 54 import org.openide.filesystems.FileObject; 55 import org.openide.filesystems.FileUtil; 56 import org.openide.modules.SpecificationVersion; 57 import org.openide.util.Mutex; 58 import org.openide.util.MutexException; 59 import org.openide.util.NbBundle; 60 61 64 public class BluejProjectProperties { 65 66 67 public static final String RUN_JVM_ARGS = "run.jvmargs"; public static final String RUN_WORK_DIR = "work.dir"; public static final String MAIN_CLASS = "main.class"; 72 73 74 public static final String APPLICATION_ARGS = "application.args"; 77 78 79 Document MAIN_CLASS_MODEL; 81 Document APPLICATION_ARGS_MODEL; 82 Document RUN_JVM_ARGS_MODEL; 83 Document RUN_WORK_DIR_MODEL; 84 85 86 88 private BluejProject project; 90 private HashMap properties; 91 private UpdateHelper updateHelper; 92 private PropertyEvaluator evaluator; 93 94 private StoreGroup privateGroup; 95 private StoreGroup projectGroup; 96 97 private Properties additionalProperties; 98 99 BluejProject getProject() { 100 return project; 101 } 102 103 104 public BluejProjectProperties( BluejProject project, UpdateHelper updateHelper, PropertyEvaluator evaluator ) { 105 this.project = project; 106 this.updateHelper = updateHelper; 107 this.evaluator = evaluator; 108 privateGroup = new StoreGroup(); 109 projectGroup = new StoreGroup(); 110 111 112 additionalProperties = new Properties (); 113 114 init(); } 116 117 119 private void init() { 120 121 122 123 EditableProperties projectProperties = updateHelper.getProperties( AntProjectHelper.PROJECT_PROPERTIES_PATH ); 125 126 127 MAIN_CLASS_MODEL = projectGroup.createStringDocument( evaluator, MAIN_CLASS ); 129 APPLICATION_ARGS_MODEL = privateGroup.createStringDocument( evaluator, APPLICATION_ARGS ); 130 RUN_JVM_ARGS_MODEL = projectGroup.createStringDocument( evaluator, RUN_JVM_ARGS ); 131 RUN_WORK_DIR_MODEL = privateGroup.createStringDocument( evaluator, RUN_WORK_DIR ); 132 133 } 134 135 public void save() { 136 try { 137 Boolean result = (Boolean ) ProjectManager.mutex().writeAccess(new Mutex.ExceptionAction() { 139 public Object run() throws IOException { 140 141 storeProperties(); 142 return Boolean.TRUE; 143 } 144 }); 145 if (result == Boolean.TRUE) { 147 ProjectManager.getDefault().saveProject(project); 148 } 149 } 150 catch (MutexException e) { 151 ErrorManager.getDefault().notify((IOException )e.getException()); 152 } 153 catch ( IOException ex ) { 154 ErrorManager.getDefault().notify( ex ); 155 } 156 } 157 158 159 160 private void storeProperties() throws IOException { 161 163 164 EditableProperties projectProperties = updateHelper.getProperties( AntProjectHelper.PROJECT_PROPERTIES_PATH ); 166 EditableProperties privateProperties = updateHelper.getProperties( AntProjectHelper.PRIVATE_PROPERTIES_PATH ); 167 168 if ( getDocumentText( RUN_WORK_DIR_MODEL ).trim().equals( "" ) ) { privateProperties.remove( RUN_WORK_DIR ); } 171 172 projectGroup.store( projectProperties ); 174 privateGroup.store( privateProperties ); 175 176 storeAdditionalProperties(projectProperties); 177 178 updateHelper.putProperties( AntProjectHelper.PROJECT_PROPERTIES_PATH, projectProperties ); 180 updateHelper.putProperties( AntProjectHelper.PRIVATE_PROPERTIES_PATH, privateProperties ); 181 182 } 183 184 private void storeAdditionalProperties(EditableProperties projectProperties) { 185 for (Iterator i = additionalProperties.keySet().iterator(); i.hasNext();) { 186 String key = (String )i.next(); 187 projectProperties.put(key, additionalProperties.getProperty(key)); 188 } 189 } 190 191 private static String getDocumentText( Document document ) { 192 try { 193 return document.getText( 0, document.getLength() ); 194 } 195 catch( BadLocationException e ) { 196 return ""; } 198 } 199 200 201 public void putAdditionalProperty(String propertyName, String propertyValue) { 202 additionalProperties.setProperty(propertyName, propertyValue); 203 } 204 205 217 } 218 | Popular Tags |