package com.babel17.netbeans; import java.awt.BorderLayout; import java.awt.Dialog; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; import java.util.HashMap; import java.util.Map; import java.util.prefs.BackingStoreException; import java.util.prefs.Preferences; import javax.swing.JComponent; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.JTextArea; import org.netbeans.api.project.ProjectUtils; import org.netbeans.spi.project.ui.CustomizerProvider; import org.netbeans.spi.project.ui.support.ProjectCustomizer; import org.netbeans.spi.project.ui.support.ProjectCustomizer.Category; public class Babel17CustomizerImpl implements CustomizerProvider { private ProjectCustomizer.Category[] categories; private ProjectCustomizer.CategoryComponentProvider panelProvider; private Babel17Project project; private static class PanelProvider implements ProjectCustomizer.CategoryComponentProvider { private Map panels; private JPanel EMPTY_PANEL = new JPanel(); public PanelProvider(Map panels) { this.panels = panels; } public JComponent create(ProjectCustomizer.Category category) { JComponent panel = (JComponent) panels.get(category); return panel == null ? EMPTY_PANEL : panel; } } private static class OptionListener implements ActionListener { private Babel17Project project; public JTextArea javalibs; OptionListener(Babel17Project project) { this.project = project; } public void actionPerformed(ActionEvent e) { Preferences prefs = project.getPreferences(); prefs.put("JAVALIBS", javalibs.getText()); try { prefs.flush(); } catch (BackingStoreException x) { } } } public Babel17CustomizerImpl(Babel17Project project) { this.project = project; categories = new ProjectCustomizer.Category[] {createCategory()}; } private void init(OptionListener listener) { Map panels = new HashMap(); panels.put(categories[0], createComponent(listener)); panelProvider = new PanelProvider(panels); } public void showCustomizer() { OptionListener listener = new OptionListener(project); init(listener); Dialog dialog = ProjectCustomizer.createCustomizerDialog(categories, panelProvider, null, listener, null); dialog.setTitle(ProjectUtils.getInformation(project).getDisplayName()); dialog.setVisible(true); } public Category createCategory() { return ProjectCustomizer.Category.create( "JAVALIBS", "Java Libraries", null); } public JComponent createComponent(OptionListener listener) { JPanel p = new JPanel(); p.setLayout(new BorderLayout()); p.add(new JLabel("Paths to JAR files (separate via semicolon):"), BorderLayout.NORTH); JTextArea t = new JTextArea(); listener.javalibs = t; Preferences prefs = project.getPreferences(); t.setText(prefs.get("JAVALIBS", "")); t.setLineWrap(true); t.setAutoscrolls(true); JScrollPane scrollPane = new JScrollPane(t); p.add(scrollPane, BorderLayout.CENTER); return p; } }