| /* |
| * Licensed to the Apache Software Foundation (ASF) under one |
| * or more contributor license agreements. See the NOTICE file |
| * distributed with this work for additional information |
| * regarding copyright ownership. The ASF licenses this file |
| * to you under the Apache License, Version 2.0 (the |
| * "License"); you may not use this file except in compliance |
| * with the License. You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, |
| * software distributed under the License is distributed on an |
| * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY |
| * KIND, either express or implied. See the License for the |
| * specific language governing permissions and limitations |
| * under the License. |
| */ |
| |
| package org.netbeans.modules.maven.repository.ui; |
| |
| import java.awt.Cursor; |
| import java.awt.Dimension; |
| import java.awt.GridLayout; |
| import java.awt.event.ActionEvent; |
| import java.net.MalformedURLException; |
| import java.net.URL; |
| import java.util.Iterator; |
| import java.util.List; |
| import javax.swing.AbstractAction; |
| import javax.swing.Action; |
| import javax.swing.JButton; |
| import javax.swing.JComponent; |
| import javax.swing.JToolBar; |
| import javax.swing.SwingUtilities; |
| import javax.swing.UIManager; |
| import javax.swing.text.JTextComponent; |
| import org.apache.maven.model.CiManagement; |
| import org.apache.maven.model.IssueManagement; |
| import org.apache.maven.model.License; |
| import org.apache.maven.model.MailingList; |
| import org.apache.maven.model.Scm; |
| import org.apache.maven.project.MavenProject; |
| import org.netbeans.core.spi.multiview.CloseOperationState; |
| import org.netbeans.core.spi.multiview.MultiViewElement; |
| import org.netbeans.core.spi.multiview.MultiViewElementCallback; |
| import org.netbeans.modules.maven.api.CommonArtifactActions; |
| import static org.netbeans.modules.maven.repository.ui.Bundle.*; |
| import org.openide.awt.Actions; |
| import org.openide.awt.HtmlBrowser; |
| import org.openide.awt.StatusDisplayer; |
| import org.openide.util.Lookup; |
| import org.openide.util.LookupEvent; |
| import org.openide.util.LookupListener; |
| import org.openide.util.NbBundle.Messages; |
| import org.openide.windows.TopComponent; |
| |
| /** |
| * |
| * @author mkleint |
| */ |
| public class ProjectInfoPanel extends TopComponent implements MultiViewElement, LookupListener { |
| private Lookup.Result<MavenProject> result; |
| private JToolBar toolbar; |
| |
| /** Creates new form ProjectInfoPanel */ |
| public ProjectInfoPanel(Lookup lookup) { |
| super(lookup); |
| initComponents(); |
| btnCheckout.setIcon(null); |
| if( "Aqua".equals(UIManager.getLookAndFeel().getID()) ) { //NOI18N |
| setBackground(UIManager.getColor("NbExplorerView.background")); //NOI18N |
| this.jPanel1.setBackground(UIManager.getColor("NbExplorerView.background")); //NOI18N |
| this.pnlCim.setBackground(UIManager.getColor("NbExplorerView.background")); //NOI18N |
| this.pnlIssues.setBackground(UIManager.getColor("NbExplorerView.background")); //NOI18N |
| this.pnlLicense.setBackground(UIManager.getColor("NbExplorerView.background")); //NOI18N |
| this.jPanel4.setBackground(UIManager.getColor("NbExplorerView.background")); //NOI18N |
| this.pnlMailingLists.setBackground(UIManager.getColor("NbExplorerView.background")); //NOI18N |
| this.pnlScm.setBackground(UIManager.getColor("NbExplorerView.background")); //NOI18N |
| } |
| } |
| |
| public @Override int getPersistenceType() { |
| return PERSISTENCE_NEVER; |
| } |
| |
| /** This method is called from within the constructor to |
| * initialize the form. |
| * WARNING: Do NOT modify this code. The content of this method is |
| * always regenerated by the Form Editor. |
| */ |
| @SuppressWarnings("unchecked") |
| // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents |
| private void initComponents() { |
| |
| jPanel1 = new javax.swing.JPanel(); |
| jScrollPane2 = new javax.swing.JScrollPane(); |
| jPanel4 = new javax.swing.JPanel(); |
| lblProjectName = new javax.swing.JLabel(); |
| txtProjectName = new javax.swing.JTextField(); |
| lblDescription = new javax.swing.JLabel(); |
| jScrollPane1 = new javax.swing.JScrollPane(); |
| taDescription = new javax.swing.JTextArea(); |
| lblProjectHome = new javax.swing.JLabel(); |
| btnProjectHome = new javax.swing.JButton(); |
| pnlIssues = new javax.swing.JPanel(); |
| lblSystem = new javax.swing.JLabel(); |
| txtSystem = new javax.swing.JTextField(); |
| lblIssues = new javax.swing.JLabel(); |
| btnIssues = new javax.swing.JButton(); |
| pnlScm = new javax.swing.JPanel(); |
| lblScmUrl = new javax.swing.JLabel(); |
| btnScmUrl = new javax.swing.JButton(); |
| lblConnection = new javax.swing.JLabel(); |
| txtConnection = new javax.swing.JTextField(); |
| lblDevConnection = new javax.swing.JLabel(); |
| txtDevConnection = new javax.swing.JTextField(); |
| btnCheckout = new javax.swing.JButton(); |
| pnlCim = new javax.swing.JPanel(); |
| lblCimSystem = new javax.swing.JLabel(); |
| txtCimSystem = new javax.swing.JTextField(); |
| lblCimUrl = new javax.swing.JLabel(); |
| btnCimUrl = new javax.swing.JButton(); |
| pnlLicense = new javax.swing.JPanel(); |
| pnlMailingLists = new javax.swing.JPanel(); |
| |
| setLayout(new java.awt.BorderLayout()); |
| |
| lblProjectName.setText(org.openide.util.NbBundle.getMessage(ProjectInfoPanel.class, "ProjectInfoPanel.lblProjectName.text")); // NOI18N |
| |
| txtProjectName.setEditable(false); |
| |
| lblDescription.setText(org.openide.util.NbBundle.getMessage(ProjectInfoPanel.class, "ProjectInfoPanel.lblDescription.text")); // NOI18N |
| |
| taDescription.setColumns(20); |
| taDescription.setEditable(false); |
| taDescription.setLineWrap(true); |
| taDescription.setRows(3); |
| taDescription.setWrapStyleWord(true); |
| jScrollPane1.setViewportView(taDescription); |
| |
| lblProjectHome.setText(org.openide.util.NbBundle.getMessage(ProjectInfoPanel.class, "ProjectInfoPanel.lblProjectHome.text")); // NOI18N |
| |
| btnProjectHome.setText("prj url"); // NOI18N |
| btnProjectHome.setBorder(null); |
| btnProjectHome.setBorderPainted(false); |
| btnProjectHome.setContentAreaFilled(false); |
| btnProjectHome.setHorizontalAlignment(javax.swing.SwingConstants.LEADING); |
| |
| pnlIssues.setBorder(javax.swing.BorderFactory.createTitledBorder(org.openide.util.NbBundle.getMessage(ProjectInfoPanel.class, "TIT_Issues"))); // NOI18N |
| |
| lblSystem.setText(org.openide.util.NbBundle.getMessage(ProjectInfoPanel.class, "ProjectInfoPanel.lblSystem.text")); // NOI18N |
| |
| txtSystem.setEditable(false); |
| |
| lblIssues.setText(org.openide.util.NbBundle.getMessage(ProjectInfoPanel.class, "ProjectInfoPanel.lblIssues.text")); // NOI18N |
| |
| btnIssues.setText("isssue tracking url"); // NOI18N |
| btnIssues.setBorder(null); |
| btnIssues.setBorderPainted(false); |
| btnIssues.setContentAreaFilled(false); |
| btnIssues.setHorizontalAlignment(javax.swing.SwingConstants.LEADING); |
| |
| javax.swing.GroupLayout pnlIssuesLayout = new javax.swing.GroupLayout(pnlIssues); |
| pnlIssues.setLayout(pnlIssuesLayout); |
| pnlIssuesLayout.setHorizontalGroup( |
| pnlIssuesLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) |
| .addGroup(pnlIssuesLayout.createSequentialGroup() |
| .addContainerGap() |
| .addGroup(pnlIssuesLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) |
| .addComponent(lblSystem) |
| .addComponent(lblIssues)) |
| .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) |
| .addGroup(pnlIssuesLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) |
| .addComponent(btnIssues, javax.swing.GroupLayout.DEFAULT_SIZE, 711, Short.MAX_VALUE) |
| .addComponent(txtSystem, javax.swing.GroupLayout.DEFAULT_SIZE, 711, Short.MAX_VALUE)) |
| .addContainerGap()) |
| ); |
| pnlIssuesLayout.setVerticalGroup( |
| pnlIssuesLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) |
| .addGroup(pnlIssuesLayout.createSequentialGroup() |
| .addGroup(pnlIssuesLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) |
| .addComponent(lblSystem) |
| .addComponent(txtSystem, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) |
| .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) |
| .addGroup(pnlIssuesLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) |
| .addComponent(btnIssues) |
| .addComponent(lblIssues)) |
| .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) |
| ); |
| |
| pnlScm.setBorder(javax.swing.BorderFactory.createTitledBorder(org.openide.util.NbBundle.getMessage(ProjectInfoPanel.class, "TIT_SCM"))); // NOI18N |
| |
| lblScmUrl.setText(org.openide.util.NbBundle.getMessage(ProjectInfoPanel.class, "ProjectInfoPanel.lblScmUrl.text")); // NOI18N |
| |
| btnScmUrl.setText("scm url"); // NOI18N |
| btnScmUrl.setBorder(null); |
| btnScmUrl.setBorderPainted(false); |
| btnScmUrl.setContentAreaFilled(false); |
| btnScmUrl.setHorizontalAlignment(javax.swing.SwingConstants.LEADING); |
| |
| lblConnection.setText(org.openide.util.NbBundle.getMessage(ProjectInfoPanel.class, "ProjectInfoPanel.lblConnection.text")); // NOI18N |
| |
| txtConnection.setEditable(false); |
| |
| lblDevConnection.setText(org.openide.util.NbBundle.getMessage(ProjectInfoPanel.class, "ProjectInfoPanel.lblDevConnection.text")); // NOI18N |
| |
| txtDevConnection.setEditable(false); |
| |
| btnCheckout.setAction(CommonArtifactActions.createScmCheckoutAction(getLookup())); |
| btnCheckout.setText(org.openide.util.NbBundle.getMessage(ProjectInfoPanel.class, "ProjectInfoPanel.btnCheckout.text")); // NOI18N |
| |
| javax.swing.GroupLayout pnlScmLayout = new javax.swing.GroupLayout(pnlScm); |
| pnlScm.setLayout(pnlScmLayout); |
| pnlScmLayout.setHorizontalGroup( |
| pnlScmLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) |
| .addGroup(pnlScmLayout.createSequentialGroup() |
| .addContainerGap() |
| .addGroup(pnlScmLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) |
| .addGroup(pnlScmLayout.createSequentialGroup() |
| .addGroup(pnlScmLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) |
| .addComponent(lblScmUrl) |
| .addComponent(lblConnection)) |
| .addGap(42, 42, 42) |
| .addGroup(pnlScmLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) |
| .addComponent(btnScmUrl, javax.swing.GroupLayout.DEFAULT_SIZE, 653, Short.MAX_VALUE) |
| .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, pnlScmLayout.createSequentialGroup() |
| .addGroup(pnlScmLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING) |
| .addComponent(txtDevConnection, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, 526, Short.MAX_VALUE) |
| .addComponent(txtConnection, javax.swing.GroupLayout.DEFAULT_SIZE, 526, Short.MAX_VALUE)) |
| .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) |
| .addComponent(btnCheckout))) |
| .addContainerGap()) |
| .addComponent(lblDevConnection))) |
| ); |
| pnlScmLayout.setVerticalGroup( |
| pnlScmLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) |
| .addGroup(pnlScmLayout.createSequentialGroup() |
| .addGroup(pnlScmLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) |
| .addComponent(lblScmUrl) |
| .addComponent(btnScmUrl)) |
| .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) |
| .addGroup(pnlScmLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) |
| .addComponent(lblConnection) |
| .addComponent(txtConnection, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) |
| .addComponent(btnCheckout)) |
| .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) |
| .addGroup(pnlScmLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) |
| .addComponent(txtDevConnection, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) |
| .addComponent(lblDevConnection)) |
| .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) |
| ); |
| |
| pnlCim.setBorder(javax.swing.BorderFactory.createTitledBorder(org.openide.util.NbBundle.getMessage(ProjectInfoPanel.class, "TIT_CIManagement"))); // NOI18N |
| |
| lblCimSystem.setText(org.openide.util.NbBundle.getMessage(ProjectInfoPanel.class, "ProjectInfoPanel.lblCimSystem.text")); // NOI18N |
| |
| txtCimSystem.setEditable(false); |
| |
| lblCimUrl.setText(org.openide.util.NbBundle.getMessage(ProjectInfoPanel.class, "ProjectInfoPanel.lblCimUrl.text")); // NOI18N |
| |
| btnCimUrl.setText("cim url"); // NOI18N |
| btnCimUrl.setBorder(null); |
| btnCimUrl.setBorderPainted(false); |
| btnCimUrl.setContentAreaFilled(false); |
| btnCimUrl.setHorizontalAlignment(javax.swing.SwingConstants.LEADING); |
| |
| javax.swing.GroupLayout pnlCimLayout = new javax.swing.GroupLayout(pnlCim); |
| pnlCim.setLayout(pnlCimLayout); |
| pnlCimLayout.setHorizontalGroup( |
| pnlCimLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) |
| .addGroup(pnlCimLayout.createSequentialGroup() |
| .addContainerGap() |
| .addGroup(pnlCimLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) |
| .addComponent(lblCimSystem) |
| .addComponent(lblCimUrl)) |
| .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) |
| .addGroup(pnlCimLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) |
| .addComponent(btnCimUrl, javax.swing.GroupLayout.DEFAULT_SIZE, 711, Short.MAX_VALUE) |
| .addComponent(txtCimSystem, javax.swing.GroupLayout.DEFAULT_SIZE, 711, Short.MAX_VALUE)) |
| .addContainerGap()) |
| ); |
| pnlCimLayout.setVerticalGroup( |
| pnlCimLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) |
| .addGroup(pnlCimLayout.createSequentialGroup() |
| .addGroup(pnlCimLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) |
| .addComponent(lblCimSystem) |
| .addComponent(txtCimSystem, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) |
| .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) |
| .addGroup(pnlCimLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) |
| .addComponent(btnCimUrl) |
| .addComponent(lblCimUrl)) |
| .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) |
| ); |
| |
| pnlLicense.setBorder(javax.swing.BorderFactory.createTitledBorder(org.openide.util.NbBundle.getMessage(ProjectInfoPanel.class, "TIT_Licenses"))); // NOI18N |
| pnlLicense.setLayout(new java.awt.GridLayout(1, 1)); |
| |
| pnlMailingLists.setBorder(javax.swing.BorderFactory.createTitledBorder(org.openide.util.NbBundle.getMessage(ProjectInfoPanel.class, "TIT_MailingLists"))); // NOI18N |
| pnlMailingLists.setLayout(new java.awt.GridLayout(1, 1)); |
| |
| javax.swing.GroupLayout jPanel4Layout = new javax.swing.GroupLayout(jPanel4); |
| jPanel4.setLayout(jPanel4Layout); |
| jPanel4Layout.setHorizontalGroup( |
| jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) |
| .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel4Layout.createSequentialGroup() |
| .addContainerGap() |
| .addGroup(jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING) |
| .addComponent(pnlScm, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) |
| .addComponent(pnlMailingLists, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, 818, Short.MAX_VALUE) |
| .addComponent(pnlLicense, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, 818, Short.MAX_VALUE) |
| .addGroup(javax.swing.GroupLayout.Alignment.LEADING, jPanel4Layout.createSequentialGroup() |
| .addGroup(jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) |
| .addComponent(lblProjectName) |
| .addComponent(lblDescription)) |
| .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) |
| .addGroup(jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) |
| .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 662, Short.MAX_VALUE) |
| .addComponent(txtProjectName, javax.swing.GroupLayout.DEFAULT_SIZE, 662, Short.MAX_VALUE))) |
| .addGroup(jPanel4Layout.createSequentialGroup() |
| .addComponent(lblProjectHome) |
| .addGap(18, 18, 18) |
| .addComponent(btnProjectHome, javax.swing.GroupLayout.DEFAULT_SIZE, 666, Short.MAX_VALUE)) |
| .addComponent(pnlIssues, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) |
| .addComponent(pnlCim, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) |
| .addContainerGap()) |
| ); |
| jPanel4Layout.setVerticalGroup( |
| jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) |
| .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel4Layout.createSequentialGroup() |
| .addContainerGap() |
| .addGroup(jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) |
| .addComponent(lblProjectName) |
| .addComponent(txtProjectName, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) |
| .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) |
| .addGroup(jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) |
| .addComponent(lblDescription) |
| .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 61, Short.MAX_VALUE)) |
| .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) |
| .addGroup(jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) |
| .addComponent(btnProjectHome, javax.swing.GroupLayout.PREFERRED_SIZE, 21, javax.swing.GroupLayout.PREFERRED_SIZE) |
| .addComponent(lblProjectHome)) |
| .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) |
| .addComponent(pnlIssues, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) |
| .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) |
| .addComponent(pnlScm, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) |
| .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) |
| .addComponent(pnlCim, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) |
| .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) |
| .addComponent(pnlLicense, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) |
| .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) |
| .addComponent(pnlMailingLists, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) |
| .addGap(158, 158, 158)) |
| ); |
| |
| jScrollPane2.setViewportView(jPanel4); |
| |
| javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1); |
| jPanel1.setLayout(jPanel1Layout); |
| jPanel1Layout.setHorizontalGroup( |
| jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) |
| .addGap(0, 869, Short.MAX_VALUE) |
| .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) |
| .addGroup(jPanel1Layout.createSequentialGroup() |
| .addContainerGap() |
| .addComponent(jScrollPane2, javax.swing.GroupLayout.DEFAULT_SIZE, 845, Short.MAX_VALUE) |
| .addContainerGap())) |
| ); |
| jPanel1Layout.setVerticalGroup( |
| jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) |
| .addGap(0, 531, Short.MAX_VALUE) |
| .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) |
| .addGroup(jPanel1Layout.createSequentialGroup() |
| .addContainerGap() |
| .addComponent(jScrollPane2, javax.swing.GroupLayout.DEFAULT_SIZE, 519, Short.MAX_VALUE))) |
| ); |
| |
| add(jPanel1, java.awt.BorderLayout.CENTER); |
| }// </editor-fold>//GEN-END:initComponents |
| |
| |
| // Variables declaration - do not modify//GEN-BEGIN:variables |
| private javax.swing.JButton btnCheckout; |
| private javax.swing.JButton btnCimUrl; |
| private javax.swing.JButton btnIssues; |
| private javax.swing.JButton btnProjectHome; |
| private javax.swing.JButton btnScmUrl; |
| private javax.swing.JPanel jPanel1; |
| private javax.swing.JPanel jPanel4; |
| private javax.swing.JScrollPane jScrollPane1; |
| private javax.swing.JScrollPane jScrollPane2; |
| private javax.swing.JLabel lblCimSystem; |
| private javax.swing.JLabel lblCimUrl; |
| private javax.swing.JLabel lblConnection; |
| private javax.swing.JLabel lblDescription; |
| private javax.swing.JLabel lblDevConnection; |
| private javax.swing.JLabel lblIssues; |
| private javax.swing.JLabel lblProjectHome; |
| private javax.swing.JLabel lblProjectName; |
| private javax.swing.JLabel lblScmUrl; |
| private javax.swing.JLabel lblSystem; |
| private javax.swing.JPanel pnlCim; |
| private javax.swing.JPanel pnlIssues; |
| private javax.swing.JPanel pnlLicense; |
| private javax.swing.JPanel pnlMailingLists; |
| private javax.swing.JPanel pnlScm; |
| private javax.swing.JTextArea taDescription; |
| private javax.swing.JTextField txtCimSystem; |
| private javax.swing.JTextField txtConnection; |
| private javax.swing.JTextField txtDevConnection; |
| private javax.swing.JTextField txtProjectName; |
| private javax.swing.JTextField txtSystem; |
| // End of variables declaration//GEN-END:variables |
| |
| @Override |
| public JComponent getVisualRepresentation() { |
| return this; |
| } |
| |
| @Override |
| public JComponent getToolbarRepresentation() { |
| if (toolbar == null) { |
| toolbar = new JToolBar(); |
| if( "Aqua".equals(UIManager.getLookAndFeel().getID()) ) { //NOI18N |
| toolbar.setBackground(UIManager.getColor("NbExplorerView.background")); //NOI18N |
| } |
| toolbar.setFloatable(false); |
| Action[] a = new Action[1]; |
| Action[] actions = getLookup().lookup(a.getClass()); |
| Dimension space = new Dimension(3, 0); |
| toolbar.addSeparator(space); |
| for (Action act : actions) { |
| JButton btn = new JButton(); |
| Actions.connect(btn, act); |
| toolbar.add(btn); |
| toolbar.addSeparator(space); |
| } |
| } |
| return toolbar; |
| } |
| |
| |
| @Override |
| public void componentOpened() { |
| super.componentOpened(); |
| result = getLookup().lookupResult(MavenProject.class); |
| populateFields(); |
| result.addLookupListener(this); |
| } |
| |
| @Override |
| public void componentClosed() { |
| super.componentClosed(); |
| result.removeLookupListener(this); |
| } |
| |
| @Override |
| public void componentShowing() { |
| super.componentShowing(); |
| } |
| |
| @Override |
| public void componentHidden() { |
| super.componentHidden(); |
| } |
| |
| @Override |
| public void componentActivated() { |
| super.componentActivated(); |
| } |
| |
| @Override |
| public void componentDeactivated() { |
| super.componentDeactivated(); |
| } |
| |
| |
| public @Override void setMultiViewCallback(MultiViewElementCallback callback) {} |
| |
| @Override |
| public CloseOperationState canCloseElement() { |
| return CloseOperationState.STATE_OK; |
| } |
| |
| private void populateFields() { |
| boolean loading = true; |
| Iterator<? extends MavenProject> iter = result.allInstances().iterator(); |
| String name = null, desc = null, homeUrl = null; |
| String imUrl = null, imSystem = null; |
| String scmUrl = null, scmConn = null, scmDevConn = null; |
| String cimSystem = null, cimUrl = null; |
| if (iter.hasNext()) { |
| loading = false; |
| MavenProject prj = iter.next(); |
| name = prj.getName(); |
| desc = prj.getDescription(); |
| if (desc != null) { |
| desc = desc.replaceAll("\\s+", " ").trim(); |
| } |
| homeUrl = prj.getUrl(); |
| IssueManagement im = prj.getIssueManagement(); |
| if (im != null) { |
| imUrl = im.getUrl(); |
| imSystem = im.getSystem(); |
| } |
| Scm scm = prj.getScm(); |
| if (scm != null) { |
| scmUrl = scm.getUrl(); |
| scmConn = scm.getConnection(); |
| scmDevConn = scm.getDeveloperConnection(); |
| } |
| CiManagement cim = prj.getCiManagement(); |
| if (cim != null) { |
| cimSystem = cim.getSystem(); |
| cimUrl = cim.getUrl(); |
| } |
| @SuppressWarnings("unchecked") |
| List<License> licenses = prj.getLicenses(); |
| if (licenses != null) { |
| GridLayout layout = (GridLayout)pnlLicense.getLayout(); |
| layout.setColumns(1); |
| layout.setRows(licenses.size()); |
| for (License lic : licenses) { |
| LicensePanel pnl = new LicensePanel(); |
| setPlainText(pnl.txtName, lic.getName(), loading); |
| setLinkedText(pnl.btnURL, lic.getUrl(), loading); |
| pnlLicense.add(pnl); |
| } |
| } |
| @SuppressWarnings("unchecked") |
| List<MailingList> mailings = prj.getMailingLists(); |
| if (mailings != null) { |
| GridLayout layout = (GridLayout)pnlMailingLists.getLayout(); |
| layout.setColumns(1); |
| layout.setRows(mailings.size()); |
| for (MailingList list : mailings) { |
| MailingListPanel pnl = new MailingListPanel(); |
| setPlainText(pnl.txtName, list.getName(), loading); |
| setLinkedText(pnl.btnArchive, list.getArchive(), loading); |
| setPlainText(pnl.txtSubscribe, list.getSubscribe(), loading); |
| setPlainText(pnl.txtUnsubscribe, list.getUnsubscribe(), loading); |
| pnlMailingLists.add(pnl); |
| } |
| } |
| } |
| setPlainText(txtProjectName, name, loading); |
| setPlainText(taDescription, desc, loading); |
| setLinkedText(btnProjectHome, homeUrl, loading); |
| |
| setLinkedText(btnIssues, imUrl, loading); |
| setPlainText(txtSystem, imSystem, loading); |
| |
| setLinkedText(btnScmUrl, scmUrl, loading); |
| setPlainText(txtConnection, scmConn, loading); |
| setPlainText(txtDevConnection, scmDevConn, loading); |
| |
| setLinkedText(btnCimUrl, cimUrl, loading); |
| setPlainText(txtCimSystem, cimSystem, loading); |
| |
| } |
| |
| @Override |
| public void resultChanged(LookupEvent ev) { |
| SwingUtilities.invokeLater(new Runnable() { |
| @Override |
| public void run() { |
| populateFields(); |
| } |
| }); |
| } |
| |
| @Messages({ |
| "LBL_Loading=<Loading>", |
| "LBL_Undefined=<Undefined>" |
| }) |
| private void setLinkedText(JButton btn, String url, boolean loading) { |
| if (url == null) { |
| btn.setAction(null); |
| if (loading) { |
| btn.setText(LBL_Loading()); |
| } else { |
| btn.setText(LBL_Undefined()); |
| } |
| btn.setCursor(null); |
| } else { |
| btn.setAction(new LinkAction(url)); |
| btn.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR)); |
| btn.setText("<html><a href=\"\">" + url + "</a></html>"); |
| } |
| } |
| |
| private void setPlainText(JTextComponent field, String value, boolean loading) { |
| if (value == null) { |
| if (loading) { |
| field.setText(LBL_Loading()); |
| } else { |
| field.setText(LBL_Undefined()); |
| } |
| } else { |
| field.setText(value); |
| field.setCaretPosition(0); |
| } |
| } |
| |
| private class LinkAction extends AbstractAction { |
| private final String url; |
| |
| public LinkAction(String url) { |
| this.url = url; |
| } |
| |
| @Messages("ERR_WrongURL=Not a proper URL, cannot open in browser: {0}") |
| @Override |
| public void actionPerformed(ActionEvent e) { |
| try { |
| URL u = new URL(url); |
| HtmlBrowser.URLDisplayer.getDefault().showURL(u); |
| } catch (MalformedURLException ex) { |
| StatusDisplayer.getDefault().setStatusText(ERR_WrongURL(url)); |
| } |
| } |
| |
| } |
| } |