public CustomizerRun(J2SEProjectProperties uiProperties) { this.uiProperties = uiProperties; initComponents(); this.project = uiProperties.getProject(); nextExtensionYPos = 0; // BEGIN Deprecated compProviderDeprecated = Lookup.getDefault().lookup(J2SERunConfigProvider.class); initExtPanel(project); // END Deprecated for (J2SECategoryExtensionProvider compProvider : project.getLookup().lookupAll(J2SECategoryExtensionProvider.class)) { if (compProvider.getCategory() == J2SECategoryExtensionProvider.ExtensibleCategory.RUN) { if (addExtPanel(project, compProvider, nextExtensionYPos)) { compProviders.add(compProvider); nextExtensionYPos++; } } } addPanelFiller(nextExtensionYPos); configs = uiProperties.RUN_CONFIGS; data = new JTextField[] { jTextFieldMainClass, jTextFieldArgs, jTextVMOptions, jTextWorkingDirectory, }; dataLabels = new JLabel[] { jLabelMainClass, jLabelArgs, jLabelVMOptions, jLabelWorkingDirectory, }; keys = new String[] { ProjectProperties.MAIN_CLASS, ProjectProperties.APPLICATION_ARGS, ProjectProperties.RUN_JVM_ARGS, ProjectProperties.RUN_WORK_DIR, }; assert data.length == keys.length; configChanged(uiProperties.activeConfig); configCombo.setRenderer(new ConfigListCellRenderer()); for (int i = 0; i < data.length; i++) { final JTextField field = data[i]; final String prop = keys[i]; final JLabel label = dataLabels[i]; field .getDocument() .addDocumentListener( new DocumentListener() { Font basefont = label.getFont(); Font boldfont = basefont.deriveFont(Font.BOLD); { updateFont(); } public void insertUpdate(DocumentEvent e) { changed(); } public void removeUpdate(DocumentEvent e) { changed(); } public void changedUpdate(DocumentEvent e) {} void changed() { String config = (String) configCombo.getSelectedItem(); if (config.length() == 0) { config = null; } String v = field.getText(); if (v != null && config != null && v.equals(configs.get(null).get(prop))) { // default value, do not store as such v = null; } configs.get(config).put(prop, v); updateFont(); } void updateFont() { String v = field.getText(); String config = (String) configCombo.getSelectedItem(); if (config.length() == 0) { config = null; } String def = configs.get(null).get(prop); label.setFont( config != null && !Utilities.compareObjects( v != null ? v : "", def != null ? def : "") ? boldfont : basefont); } }); } jButtonMainClass.addActionListener( new MainClassListener(project.getSourceRoots(), jTextFieldMainClass)); }