public static GoModuleType getInstance() { return (GoModuleType) ModuleTypeManager.getInstance().findByID(MODULE_TYPE_ID); }
public ModuleTypeStep(boolean createNewProject) { myPanel = new JPanel(new GridBagLayout()); myPanel.setBorder(BorderFactory.createEtchedBorder()); myModuleDescriptionPane = new JEditorPane(); myModuleDescriptionPane.setContentType(UIUtil.HTML_MIME); myModuleDescriptionPane.addHyperlinkListener( new HyperlinkListener() { public void hyperlinkUpdate(HyperlinkEvent e) { if (e.getEventType() == HyperlinkEvent.EventType.ACTIVATED) { try { BrowserUtil.launchBrowser(e.getURL().toString()); } catch (IllegalThreadStateException ex) { // it's nnot a problem } } } }); myModuleDescriptionPane.setEditable(false); final ModuleType[] allModuleTypes = ModuleTypeManager.getInstance().getRegisteredTypes(); myTypesList = new JList(allModuleTypes); myTypesList.setSelectionModel(new PermanentSingleSelectionModel()); myTypesList.setCellRenderer(new ModuleTypesListCellRenderer()); myTypesList.addListSelectionListener( new ListSelectionListener() { public void valueChanged(ListSelectionEvent e) { if (e.getValueIsAdjusting()) { return; } final ModuleType typeSelected = (ModuleType) myTypesList.getSelectedValue(); myModuleType = typeSelected; //noinspection HardCodedStringLiteral myModuleDescriptionPane.setText( "<html><body><font face=\"verdana\" size=\"-1\">" + typeSelected.getDescription() + "</font></body></html>"); myEventDispatcher.getMulticaster().moduleTypeSelected(typeSelected); } }); myTypesList.setSelectedIndex(0); myTypesList.addMouseListener( new MouseAdapter() { public void mouseClicked(MouseEvent e) { if (e.getClickCount() == 2) { if (myDoubleClickAction != null) { if (myTypesList.getSelectedValue() != null) { myDoubleClickAction.run(); } } } } }); myRbCreateNewModule = new JRadioButton(IdeBundle.message("radio.create.new.module"), true); myRbImportModule = new JRadioButton(IdeBundle.message("radio.import.existing.module")); myButtonGroup = new ButtonGroup(); myButtonGroup.add(myRbCreateNewModule); myButtonGroup.add(myRbImportModule); ModulesRbListener listener = new ModulesRbListener(); myRbCreateNewModule.addItemListener(listener); myRbImportModule.addItemListener(listener); JTextField tfModuleFilePath = new JTextField(); final String productName = ApplicationNamesInfo.getInstance().getProductName(); myModulePathFieldPanel = createFieldPanel( tfModuleFilePath, IdeBundle.message("label.path.to.module.file", productName), new BrowseFilesListener( tfModuleFilePath, IdeBundle.message("prompt.select.module.file.to.import", productName), null, new ModuleFileChooserDescriptor())); myModulePathFieldPanel.setEnabled(false); if (createNewProject) { final JLabel moduleTypeLabel = new JLabel(IdeBundle.message("label.select.module.type")); moduleTypeLabel.setFont(UIUtil.getLabelFont().deriveFont(Font.BOLD)); myPanel.add(moduleTypeLabel, LABEL_CONSTRAINT); } else { myPanel.add( myRbCreateNewModule, new GridBagConstraints( 0, GridBagConstraints.RELATIVE, 1, 1, 0.0, 0.0, GridBagConstraints.NORTHWEST, GridBagConstraints.NONE, new Insets(8, 10, 8, 10), 0, 0)); } final JLabel descriptionLabel = new JLabel(IdeBundle.message("label.description")); descriptionLabel.setFont(UIUtil.getLabelFont().deriveFont(Font.BOLD)); myPanel.add( descriptionLabel, new GridBagConstraints( 1, GridBagConstraints.RELATIVE, 1, 1, 0.0, 0.0, GridBagConstraints.SOUTHWEST, GridBagConstraints.NONE, new Insets(0, 0, 0, 0), 0, 0)); final JScrollPane typesListScrollPane = ScrollPaneFactory.createScrollPane(myTypesList); final Dimension preferredSize = calcTypeListPreferredSize(allModuleTypes); typesListScrollPane.setPreferredSize(preferredSize); typesListScrollPane.setMinimumSize(preferredSize); myPanel.add( typesListScrollPane, new GridBagConstraints( 0, GridBagConstraints.RELATIVE, 1, 1, 0.2, (createNewProject ? 1.0 : 0.0), GridBagConstraints.NORTHWEST, GridBagConstraints.BOTH, new Insets(0, createNewProject ? 10 : 30, 0, 10), 0, 0)); final JScrollPane descriptionScrollPane = ScrollPaneFactory.createScrollPane(myModuleDescriptionPane); descriptionScrollPane.setPreferredSize( new Dimension(preferredSize.width * 3, preferredSize.height)); myPanel.add( descriptionScrollPane, new GridBagConstraints( 1, GridBagConstraints.RELATIVE, 1, 1, 0.8, (createNewProject ? 1.0 : 0.0), GridBagConstraints.CENTER, GridBagConstraints.BOTH, new Insets(0, 0, 0, 10), 0, 0)); if (!createNewProject) { myPanel.add( myRbImportModule, new GridBagConstraints( 0, GridBagConstraints.RELATIVE, 2, 1, 1.0, 0.0, GridBagConstraints.NORTHWEST, GridBagConstraints.NONE, new Insets(16, 10, 0, 10), 0, 0)); myPanel.add( myModulePathFieldPanel, new GridBagConstraints( 0, GridBagConstraints.RELATIVE, 2, 1, 1.0, 1.0, GridBagConstraints.NORTHWEST, GridBagConstraints.HORIZONTAL, new Insets(8, 30, 0, 10), 0, 0)); } }