ada.platform/src/org/netbeans/modules/ada/platform/ui/PlatformsCustomizer.java
author Andrea Lucarelli <raster@netbeans.org>
Sun, 22 Aug 2010 23:37:11 +0200
branchrelease68
changeset 16367 d2820c029d3a
parent 15779 367c7fdb5d23
permissions -rw-r--r--
Add JVM compiler support.
raster@14181
     1
/*
raster@14181
     2
 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
raster@14181
     3
 *
raster@14181
     4
 * Copyright 2008 Sun Microsystems, Inc. All rights reserved.
raster@14181
     5
 *
raster@14181
     6
 * The contents of this file are subject to the terms of either the GNU
raster@14181
     7
 * General Public License Version 2 only ("GPL") or the Common
raster@14181
     8
 * Development and Distribution License("CDDL") (collectively, the
raster@14181
     9
 * "License"). You may not use this file except in compliance with the
raster@14181
    10
 * License. You can obtain a copy of the License at
raster@14181
    11
 * http://www.netbeans.org/cddl-gplv2.html
raster@14181
    12
 * or nbbuild/licenses/CDDL-GPL-2-CP. See the License for the
raster@14181
    13
 * specific language governing permissions and limitations under the
raster@14181
    14
 * License.  When distributing the software, include this License Header
raster@14181
    15
 * Notice in each file and include the License file at
raster@14181
    16
 * nbbuild/licenses/CDDL-GPL-2-CP.  Sun designates this
raster@14181
    17
 * particular file as subject to the "Classpath" exception as provided
raster@14181
    18
 * by Sun in the GPL Version 2 section of the License file that
raster@14181
    19
 * accompanied this code. If applicable, add the following below the
raster@14181
    20
 * License Header, with the fields enclosed by brackets [] replaced by
raster@14181
    21
 * your own identifying information:
raster@14181
    22
 * "Portions Copyrighted [year] [name of copyright owner]"
raster@14181
    23
 *
raster@14181
    24
 * If you wish your version of this file to be governed by only the CDDL
raster@14181
    25
 * or only the GPL Version 2, indicate your decision by adding
raster@14181
    26
 * "[Contributor] elects to include this software in this distribution
raster@14181
    27
 * under the [CDDL or GPL Version 2] license." If you do not indicate a
raster@14181
    28
 * single choice of license, a recipient has the option to distribute
raster@14181
    29
 * your version of this file under either the CDDL, the GPL Version 2 or
raster@14181
    30
 * to extend the choice of license to its licensees as provided above.
raster@14181
    31
 * However, if you add GPL Version 2 code and therefore, elected the GPL
raster@14181
    32
 * Version 2 license, then the option applies only if the new code is
raster@14181
    33
 * made subject to such option by the copyright holder.
raster@14181
    34
 *
raster@14181
    35
 * Contributor(s):
raster@14181
    36
 *
raster@14181
    37
 * Portions Copyrighted 2008 Sun Microsystems, Inc.
raster@14181
    38
 */
raster@14181
    39
package org.netbeans.modules.ada.platform.ui;
raster@14181
    40
raster@14181
    41
import java.io.File;
raster@14181
    42
import java.awt.Dialog;
raster@15779
    43
import java.awt.EventQueue;
raster@14181
    44
import javax.swing.JButton;
raster@14181
    45
import javax.swing.JFileChooser;
raster@14181
    46
import javax.swing.JPanel;
raster@14181
    47
import javax.swing.filechooser.FileFilter;
raster@14181
    48
import org.netbeans.api.ada.platform.AdaException;
raster@14181
    49
import org.netbeans.api.ada.platform.AdaPlatform;
raster@14181
    50
import org.netbeans.api.ada.platform.AdaPlatformManager;
raster@14181
    51
import org.openide.DialogDescriptor;
raster@14181
    52
import org.openide.DialogDisplayer;
raster@14181
    53
import org.openide.awt.Mnemonics;
raster@14181
    54
import org.openide.filesystems.FileObject;
raster@14181
    55
import org.openide.filesystems.FileUtil;
raster@14181
    56
import org.openide.util.Exceptions;
raster@14181
    57
import org.openide.util.HelpCtx;
raster@14181
    58
import org.openide.util.NbBundle;
raster@15779
    59
import org.openide.util.RequestProcessor;
raster@14720
    60
import org.openide.util.Utilities;
raster@14181
    61
raster@14181
    62
/**
raster@14181
    63
 * 
raster@14181
    64
 * @author Andrea Lucarelli
raster@14181
    65
 */
raster@14181
    66
public class PlatformsCustomizer extends JPanel {
raster@14181
    67
raster@15779
    68
    /** Creates new form PlatformCustomizer */
raster@14181
    69
    public PlatformsCustomizer() {
raster@15779
    70
        adaPlatformManager = AdaPlatformManager.getInstance();
raster@14181
    71
        initComponents();
raster@15779
    72
        setAutoDetecting(false);
raster@14181
    73
    }
raster@14181
    74
raster@14181
    75
    /** This method is called from within the constructor to
raster@14181
    76
     * initialize the form.
raster@14181
    77
     * WARNING: Do NOT modify this code. The content of this method is
raster@14181
    78
     * always regenerated by the Form Editor.
raster@14181
    79
     */
raster@14181
    80
    @SuppressWarnings("unchecked")
raster@14181
    81
    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
raster@14181
    82
    private void initComponents() {
raster@14181
    83
raster@14181
    84
        jLabel6 = new javax.swing.JLabel();
raster@14181
    85
        platformsListScrollPanel = new javax.swing.JScrollPane();
raster@14181
    86
        PlatformList = new javax.swing.JList();
raster@14181
    87
        paltformsListTitleLabel = new javax.swing.JLabel();
raster@14181
    88
        newButton = new javax.swing.JButton();
raster@14181
    89
        removeButton = new javax.swing.JButton();
raster@14181
    90
        autoDetectButton = new javax.swing.JButton();
raster@14181
    91
        tabbedPane = new javax.swing.JTabbedPane();
raster@14181
    92
        mainPanel = new javax.swing.JPanel();
raster@14181
    93
        platfromNameLabel = new javax.swing.JLabel();
raster@14181
    94
        platformName = new javax.swing.JTextField();
raster@14181
    95
        compilerCommandLabel = new javax.swing.JLabel();
raster@14181
    96
        compilerCommand = new javax.swing.JTextField();
raster@14181
    97
        otherInfoLabel = new javax.swing.JLabel();
raster@14181
    98
        platformInfoTextField = new javax.swing.JTextField();
raster@15779
    99
        autoDetectLabel = new javax.swing.JLabel();
raster@15779
   100
        autoDetectProgress = new javax.swing.JProgressBar();
raster@16367
   101
        jvmCompilerCommand = new javax.swing.JTextField();
raster@16367
   102
        jvmCompilerCommandLabel = new javax.swing.JLabel();
raster@14181
   103
        adaPathPanel = new javax.swing.JPanel();
raster@14181
   104
        jLabel5 = new javax.swing.JLabel();
raster@14181
   105
        jScrollPane2 = new javax.swing.JScrollPane();
raster@14181
   106
        adaPath = new javax.swing.JList();
raster@14181
   107
        addPath = new javax.swing.JButton();
raster@14181
   108
        removePath = new javax.swing.JButton();
raster@14181
   109
        moveUpPath = new javax.swing.JButton();
raster@14181
   110
        moveDownPath = new javax.swing.JButton();
raster@14181
   111
        makeDefaultButton = new javax.swing.JButton();
raster@14181
   112
raster@14181
   113
        jLabel6.setText(org.openide.util.NbBundle.getMessage(PlatformsCustomizer.class, "PlatformsCustomizer.jLabel6.text")); // NOI18N
raster@14181
   114
raster@14181
   115
        PlatformList.setModel(platformListModel);
raster@14181
   116
        PlatformList.setSelectionMode(javax.swing.ListSelectionModel.SINGLE_SELECTION);
raster@14181
   117
        PlatformList.setCellRenderer(new PlatformListCellRenderer());
raster@14181
   118
        PlatformList.addListSelectionListener(new javax.swing.event.ListSelectionListener() {
raster@14181
   119
            public void valueChanged(javax.swing.event.ListSelectionEvent evt) {
raster@14181
   120
                PlatformListValueChanged(evt);
raster@14181
   121
            }
raster@14181
   122
        });
raster@14181
   123
        platformsListScrollPanel.setViewportView(PlatformList);
raster@14181
   124
raster@14181
   125
        paltformsListTitleLabel.setText(org.openide.util.NbBundle.getMessage(PlatformsCustomizer.class, "PlatformsCustomizer.paltformsListTitleLabel.text")); // NOI18N
raster@14181
   126
raster@14181
   127
        newButton.setText(org.openide.util.NbBundle.getMessage(PlatformsCustomizer.class, "PlatformsCustomizer.newButton.text")); // NOI18N
raster@14181
   128
        newButton.addActionListener(new java.awt.event.ActionListener() {
raster@14181
   129
            public void actionPerformed(java.awt.event.ActionEvent evt) {
raster@14181
   130
                newButtonActionPerformed(evt);
raster@14181
   131
            }
raster@14181
   132
        });
raster@14181
   133
raster@14181
   134
        removeButton.setText(org.openide.util.NbBundle.getMessage(PlatformsCustomizer.class, "PlatformsCustomizer.removeButton.text")); // NOI18N
raster@14181
   135
        removeButton.addActionListener(new java.awt.event.ActionListener() {
raster@14181
   136
            public void actionPerformed(java.awt.event.ActionEvent evt) {
raster@14181
   137
                removeButtonActionPerformed(evt);
raster@14181
   138
            }
raster@14181
   139
        });
raster@14181
   140
raster@14181
   141
        autoDetectButton.setText(org.openide.util.NbBundle.getMessage(PlatformsCustomizer.class, "PlatformsCustomizer.autoDetectButton.text")); // NOI18N
raster@14698
   142
        autoDetectButton.addActionListener(new java.awt.event.ActionListener() {
raster@14698
   143
            public void actionPerformed(java.awt.event.ActionEvent evt) {
raster@14698
   144
                autoDetectButtonActionPerformed(evt);
raster@14698
   145
            }
raster@14698
   146
        });
raster@14181
   147
raster@14181
   148
        platfromNameLabel.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT);
raster@14181
   149
        platfromNameLabel.setText(org.openide.util.NbBundle.getMessage(PlatformsCustomizer.class, "PlatformsCustomizer.platfromNameLabel.text")); // NOI18N
raster@14181
   150
raster@14181
   151
        platformName.setText(org.openide.util.NbBundle.getMessage(PlatformsCustomizer.class, "PlatformsCustomizer.platformName.text_1")); // NOI18N
raster@14181
   152
raster@14181
   153
        compilerCommandLabel.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT);
raster@14181
   154
        compilerCommandLabel.setText(org.openide.util.NbBundle.getMessage(PlatformsCustomizer.class, "PlatformsCustomizer.compilerCommandLabel.text")); // NOI18N
raster@14181
   155
raster@14181
   156
        compilerCommand.setEditable(false);
raster@14181
   157
        compilerCommand.setText(org.openide.util.NbBundle.getMessage(PlatformsCustomizer.class, "PlatformsCustomizer.compilerCommand.text")); // NOI18N
raster@14181
   158
raster@14181
   159
        otherInfoLabel.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT);
raster@14181
   160
        otherInfoLabel.setText(org.openide.util.NbBundle.getMessage(PlatformsCustomizer.class, "PlatformsCustomizer.otherInfoLabel.text")); // NOI18N
raster@14181
   161
raster@14181
   162
        platformInfoTextField.setEditable(false);
raster@14181
   163
        platformInfoTextField.setText(org.openide.util.NbBundle.getMessage(PlatformsCustomizer.class, "PlatformsCustomizer.platformInfoTextField.text")); // NOI18N
raster@14181
   164
raster@15779
   165
        autoDetectLabel.setText(org.openide.util.NbBundle.getMessage(PlatformsCustomizer.class, "PlatformsCustomizer.autoDetectLabel.text")); // NOI18N
raster@15779
   166
raster@15779
   167
        autoDetectProgress.setIndeterminate(true);
raster@15779
   168
raster@16367
   169
        jvmCompilerCommand.setEditable(false);
raster@16367
   170
        jvmCompilerCommand.setText(org.openide.util.NbBundle.getMessage(PlatformsCustomizer.class, "PlatformsCustomizer.jvmCompilerCommand.text")); // NOI18N
raster@16367
   171
raster@16367
   172
        jvmCompilerCommandLabel.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT);
raster@16367
   173
        jvmCompilerCommandLabel.setText(org.openide.util.NbBundle.getMessage(PlatformsCustomizer.class, "PlatformsCustomizer.jvmCompilerCommandLabel.text")); // NOI18N
raster@16367
   174
raster@14181
   175
        org.jdesktop.layout.GroupLayout mainPanelLayout = new org.jdesktop.layout.GroupLayout(mainPanel);
raster@14181
   176
        mainPanel.setLayout(mainPanelLayout);
raster@14181
   177
        mainPanelLayout.setHorizontalGroup(
raster@14181
   178
            mainPanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
raster@14181
   179
            .add(mainPanelLayout.createSequentialGroup()
raster@14181
   180
                .add(mainPanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
raster@14181
   181
                    .add(mainPanelLayout.createSequentialGroup()
raster@16367
   182
                        .add(10, 10, 10)
raster@16367
   183
                        .add(mainPanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.TRAILING)
raster@16367
   184
                            .add(otherInfoLabel, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 91, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
raster@16367
   185
                            .add(mainPanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
raster@16367
   186
                                .add(mainPanelLayout.createSequentialGroup()
raster@16367
   187
                                    .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
raster@16367
   188
                                    .add(compilerCommandLabel))
raster@16367
   189
                                .add(org.jdesktop.layout.GroupLayout.TRAILING, mainPanelLayout.createSequentialGroup()
raster@16367
   190
                                    .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
raster@16367
   191
                                    .add(platfromNameLabel, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 91, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE))))
raster@16367
   192
                        .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
raster@16367
   193
                        .add(mainPanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
raster@16367
   194
                            .add(compilerCommand, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 324, Short.MAX_VALUE)
raster@16367
   195
                            .add(platformName, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 324, Short.MAX_VALUE)
raster@16367
   196
                            .add(org.jdesktop.layout.GroupLayout.TRAILING, platformInfoTextField, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 324, Short.MAX_VALUE)))
raster@15779
   197
                    .add(org.jdesktop.layout.GroupLayout.TRAILING, mainPanelLayout.createSequentialGroup()
raster@16367
   198
                        .addContainerGap(192, Short.MAX_VALUE)
raster@16367
   199
                        .add(autoDetectLabel)
raster@16367
   200
                        .add(5, 5, 5)
raster@16367
   201
                        .add(autoDetectProgress, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE))
raster@16367
   202
                    .add(org.jdesktop.layout.GroupLayout.TRAILING, mainPanelLayout.createSequentialGroup()
raster@16367
   203
                        .add(19, 19, 19)
raster@16367
   204
                        .add(jvmCompilerCommandLabel)
raster@16367
   205
                        .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
raster@16367
   206
                        .add(jvmCompilerCommand, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 323, Short.MAX_VALUE)))
raster@15779
   207
                .addContainerGap())
raster@14181
   208
        );
raster@14181
   209
        mainPanelLayout.setVerticalGroup(
raster@14181
   210
            mainPanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
raster@14181
   211
            .add(mainPanelLayout.createSequentialGroup()
raster@14181
   212
                .addContainerGap()
raster@14181
   213
                .add(mainPanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE)
raster@14181
   214
                    .add(platfromNameLabel)
raster@14181
   215
                    .add(platformName, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE))
raster@14181
   216
                .addPreferredGap(org.jdesktop.layout.LayoutStyle.UNRELATED)
raster@14181
   217
                .add(mainPanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE)
raster@14181
   218
                    .add(platformInfoTextField, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
raster@14181
   219
                    .add(otherInfoLabel))
raster@14181
   220
                .addPreferredGap(org.jdesktop.layout.LayoutStyle.UNRELATED)
raster@14181
   221
                .add(mainPanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE)
raster@14181
   222
                    .add(compilerCommandLabel)
raster@14181
   223
                    .add(compilerCommand, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE))
raster@16367
   224
                .addPreferredGap(org.jdesktop.layout.LayoutStyle.UNRELATED)
raster@16367
   225
                .add(mainPanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE)
raster@16367
   226
                    .add(jvmCompilerCommand, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
raster@16367
   227
                    .add(jvmCompilerCommandLabel))
raster@16367
   228
                .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED, 144, Short.MAX_VALUE)
raster@15779
   229
                .add(mainPanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
raster@15779
   230
                    .add(autoDetectLabel)
raster@15779
   231
                    .add(autoDetectProgress, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE))
raster@15779
   232
                .addContainerGap())
raster@14181
   233
        );
raster@14181
   234
raster@14181
   235
        tabbedPane.addTab(org.openide.util.NbBundle.getMessage(PlatformsCustomizer.class, "PlatformsCustomizer.mainPanel.TabConstraints.tabTitle_1"), mainPanel); // NOI18N
raster@14181
   236
raster@14181
   237
        jLabel5.setText(org.openide.util.NbBundle.getMessage(PlatformsCustomizer.class, "PlatformsCustomizer.jLabel5.text_1")); // NOI18N
raster@14181
   238
raster@14181
   239
        adaPath.setModel(adaPathModel);
raster@14181
   240
        adaPath.setSelectionMode(javax.swing.ListSelectionModel.SINGLE_SELECTION);
raster@14181
   241
        jScrollPane2.setViewportView(adaPath);
raster@14181
   242
raster@14181
   243
        addPath.setText(org.openide.util.NbBundle.getMessage(PlatformsCustomizer.class, "PlatformsCustomizer.addPath.text")); // NOI18N
raster@14181
   244
        addPath.addActionListener(new java.awt.event.ActionListener() {
raster@14181
   245
            public void actionPerformed(java.awt.event.ActionEvent evt) {
raster@14181
   246
                addPathActionPerformed(evt);
raster@14181
   247
            }
raster@14181
   248
        });
raster@14181
   249
raster@14181
   250
        removePath.setText(org.openide.util.NbBundle.getMessage(PlatformsCustomizer.class, "PlatformsCustomizer.removePath.text")); // NOI18N
raster@14181
   251
        removePath.addActionListener(new java.awt.event.ActionListener() {
raster@14181
   252
            public void actionPerformed(java.awt.event.ActionEvent evt) {
raster@14181
   253
                removePathActionPerformed(evt);
raster@14181
   254
            }
raster@14181
   255
        });
raster@14181
   256
raster@14181
   257
        moveUpPath.setText(org.openide.util.NbBundle.getMessage(PlatformsCustomizer.class, "PlatformsCustomizer.moveUpPath.text")); // NOI18N
raster@14181
   258
        moveUpPath.addActionListener(new java.awt.event.ActionListener() {
raster@14181
   259
            public void actionPerformed(java.awt.event.ActionEvent evt) {
raster@14181
   260
                moveUpPathActionPerformed(evt);
raster@14181
   261
            }
raster@14181
   262
        });
raster@14181
   263
raster@14181
   264
        moveDownPath.setText(org.openide.util.NbBundle.getMessage(PlatformsCustomizer.class, "PlatformsCustomizer.moveDownPath.text")); // NOI18N
raster@14181
   265
        moveDownPath.addActionListener(new java.awt.event.ActionListener() {
raster@14181
   266
            public void actionPerformed(java.awt.event.ActionEvent evt) {
raster@14181
   267
                moveDownPathActionPerformed(evt);
raster@14181
   268
            }
raster@14181
   269
        });
raster@14181
   270
raster@14181
   271
        org.jdesktop.layout.GroupLayout adaPathPanelLayout = new org.jdesktop.layout.GroupLayout(adaPathPanel);
raster@14181
   272
        adaPathPanel.setLayout(adaPathPanelLayout);
raster@14181
   273
        adaPathPanelLayout.setHorizontalGroup(
raster@14181
   274
            adaPathPanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
raster@14181
   275
            .add(adaPathPanelLayout.createSequentialGroup()
raster@14181
   276
                .addContainerGap()
raster@14181
   277
                .add(adaPathPanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
raster@14181
   278
                    .add(adaPathPanelLayout.createSequentialGroup()
raster@16367
   279
                        .add(jScrollPane2, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 354, Short.MAX_VALUE)
raster@14181
   280
                        .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
raster@14181
   281
                        .add(adaPathPanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
raster@15779
   282
                            .add(moveDownPath, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
raster@15779
   283
                            .add(moveUpPath, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 89, Short.MAX_VALUE)
raster@15779
   284
                            .add(removePath, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 89, Short.MAX_VALUE)
raster@15779
   285
                            .add(addPath, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 89, Short.MAX_VALUE)))
raster@14181
   286
                    .add(jLabel5))
raster@14181
   287
                .addContainerGap())
raster@14181
   288
        );
raster@14181
   289
        adaPathPanelLayout.setVerticalGroup(
raster@14181
   290
            adaPathPanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
raster@14181
   291
            .add(adaPathPanelLayout.createSequentialGroup()
raster@14181
   292
                .add(jLabel5)
raster@14181
   293
                .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
raster@14181
   294
                .add(adaPathPanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.TRAILING)
raster@14181
   295
                    .add(org.jdesktop.layout.GroupLayout.LEADING, adaPathPanelLayout.createSequentialGroup()
raster@14181
   296
                        .add(addPath)
raster@14181
   297
                        .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
raster@14181
   298
                        .add(removePath)
raster@14181
   299
                        .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
raster@14181
   300
                        .add(moveUpPath)
raster@14181
   301
                        .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
raster@14181
   302
                        .add(moveDownPath))
raster@14720
   303
                    .add(org.jdesktop.layout.GroupLayout.LEADING, jScrollPane2, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 262, Short.MAX_VALUE))
raster@14181
   304
                .addContainerGap())
raster@14181
   305
        );
raster@14181
   306
raster@14181
   307
        tabbedPane.addTab(org.openide.util.NbBundle.getMessage(PlatformsCustomizer.class, "PlatformsCustomizer.adaPathPanel.TabConstraints.tabTitle_1"), adaPathPanel); // NOI18N
raster@14181
   308
raster@14181
   309
        makeDefaultButton.setText(org.openide.util.NbBundle.getMessage(PlatformsCustomizer.class, "PlatformsCustomizer.makeDefaultButton.text")); // NOI18N
raster@14181
   310
        makeDefaultButton.addActionListener(new java.awt.event.ActionListener() {
raster@14181
   311
            public void actionPerformed(java.awt.event.ActionEvent evt) {
raster@14181
   312
                makeDefaultButtonActionPerformed(evt);
raster@14181
   313
            }
raster@14181
   314
        });
raster@14181
   315
raster@14181
   316
        org.jdesktop.layout.GroupLayout layout = new org.jdesktop.layout.GroupLayout(this);
raster@14181
   317
        this.setLayout(layout);
raster@14181
   318
        layout.setHorizontalGroup(
raster@14181
   319
            layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
raster@14181
   320
            .add(layout.createSequentialGroup()
raster@14181
   321
                .addContainerGap()
raster@14181
   322
                .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.TRAILING)
raster@16367
   323
                    .add(org.jdesktop.layout.GroupLayout.LEADING, makeDefaultButton, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 168, Short.MAX_VALUE)
raster@16367
   324
                    .add(org.jdesktop.layout.GroupLayout.LEADING, autoDetectButton, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 168, Short.MAX_VALUE)
raster@14181
   325
                    .add(org.jdesktop.layout.GroupLayout.LEADING, layout.createSequentialGroup()
raster@16367
   326
                        .add(newButton, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 73, Short.MAX_VALUE)
raster@14181
   327
                        .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
raster@16367
   328
                        .add(removeButton, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 89, Short.MAX_VALUE))
raster@14181
   329
                    .add(org.jdesktop.layout.GroupLayout.LEADING, paltformsListTitleLabel)
raster@16367
   330
                    .add(org.jdesktop.layout.GroupLayout.LEADING, platformsListScrollPanel, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 168, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE))
raster@14181
   331
                .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
raster@16367
   332
                .add(tabbedPane, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 474, Short.MAX_VALUE)
raster@14181
   333
                .addContainerGap())
raster@14181
   334
        );
raster@14181
   335
        layout.setVerticalGroup(
raster@14181
   336
            layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
raster@14181
   337
            .add(layout.createSequentialGroup()
raster@14181
   338
                .addContainerGap()
raster@14181
   339
                .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
raster@14720
   340
                    .add(tabbedPane, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 321, Short.MAX_VALUE)
raster@14181
   341
                    .add(layout.createSequentialGroup()
raster@14181
   342
                        .add(paltformsListTitleLabel)
raster@14181
   343
                        .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
raster@14720
   344
                        .add(platformsListScrollPanel, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 214, Short.MAX_VALUE)
raster@14181
   345
                        .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
raster@14181
   346
                        .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE)
raster@14181
   347
                            .add(removeButton)
raster@14181
   348
                            .add(newButton))
raster@14181
   349
                        .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
raster@14181
   350
                        .add(autoDetectButton)
raster@14181
   351
                        .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
raster@14181
   352
                        .add(makeDefaultButton))))
raster@14181
   353
        );
raster@14181
   354
    }// </editor-fold>//GEN-END:initComponents
raster@14181
   355
raster@15779
   356
    private void setAutoDetecting(boolean autoDetecting) {
raster@15779
   357
        autoDetectButton.setEnabled(!autoDetecting);
raster@15779
   358
        newButton.setEnabled(!autoDetecting);
raster@15779
   359
        autoDetectProgress.setVisible(autoDetecting);
raster@15779
   360
        autoDetectLabel.setVisible(autoDetecting);
raster@15779
   361
    }
raster@15779
   362
raster@14181
   363
    private void loadPlatform() {
raster@14181
   364
        platformName.setText(adaPlatform.getName());
raster@14181
   365
        platformInfoTextField.setText(adaPlatform.getInfo());
raster@16367
   366
        compilerCommand.setText(adaPlatform.getGnatCompilerCommand());
raster@16367
   367
        jvmCompilerCommand.setText(adaPlatform.getJvmGnatCompilerCommand());
raster@16367
   368
        // TODO: add in main tab the commands list for ada platform
raster@14442
   369
//        adaPathModel.setModel(adaPlatform.getCompilerPath());
raster@14181
   370
    }
raster@14181
   371
raster@14181
   372
    private void clearPlatform() {
raster@14181
   373
        platformName.setText("");
raster@14181
   374
        platformInfoTextField.setText("");
raster@14181
   375
        compilerCommand.setText("");
raster@14181
   376
    }
raster@14181
   377
raster@14181
   378
    private void newButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_newButtonActionPerformed
raster@14720
   379
        JFileChooser fc = new JFileChooser();
raster@14720
   380
        if (!Utilities.isWindows()) {
raster@14720
   381
            fc.setCurrentDirectory(new File("/usr/bin"));
raster@14720
   382
            fc.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES);
raster@14720
   383
            fc.setFileFilter(new FileFilter() {
raster@14720
   384
raster@14720
   385
                @Override
raster@14720
   386
                public boolean accept(File file) {
raster@14720
   387
                    if (file.isDirectory()) {
raster@14720
   388
                        return true;
raster@14720
   389
                    } else if (file.getName().toLowerCase().contains("gnat")) {
raster@14720
   390
                        return true;
raster@14720
   391
                    } else {
raster@14720
   392
                        return false;
raster@14720
   393
                    }
raster@14720
   394
                }
raster@14720
   395
raster@14720
   396
                @Override
raster@14720
   397
                public String getDescription() {
raster@14720
   398
                    return getMessage("AdaPlatformCustomizer.adaCompilerFile");
raster@14720
   399
                }
raster@14720
   400
            });
raster@14720
   401
        } else {
raster@14720
   402
            fc.setCurrentDirectory(new File("C:/"));
raster@14720
   403
            fc.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
raster@14720
   404
            fc.setFileFilter(new FileFilter() {
raster@14720
   405
raster@14720
   406
                public boolean accept(File f) {
raster@14720
   407
                    return f.isDirectory(); // NOI18N
raster@14720
   408
                }
raster@14720
   409
raster@14720
   410
                public String getDescription() {
raster@14720
   411
                    return getMessage("AdaPlatformCustomizer.adaPlatform");
raster@14720
   412
                }
raster@14720
   413
            });
raster@14720
   414
        }
raster@14181
   415
        fc.setFileHidingEnabled(false);
raster@14181
   416
        int returnVal = fc.showOpenDialog(this);
raster@14181
   417
        if (returnVal == JFileChooser.APPROVE_OPTION) {
raster@14181
   418
            File file = fc.getSelectedFile();
raster@14720
   419
            if (file.isFile()) {
raster@14720
   420
                file = fc.getCurrentDirectory();
raster@14720
   421
            }
raster@14181
   422
            if (file != null) {
raster@14720
   423
                FileObject fo = FileUtil.toFileObject(file);
raster@14181
   424
                if (fo != null) {
raster@14181
   425
                    try {
raster@15779
   426
                        adaPlatform = adaPlatformManager.findPlatformProperties(fo);
raster@16367
   427
                        if (adaPlatform != null) {
raster@16367
   428
                            loadPlatform();
raster@16367
   429
                            platformListModel.refresh();
raster@16367
   430
                            platformName.setEditable(true);
raster@16367
   431
                        }
raster@14181
   432
                    } catch (AdaException ex) {
raster@14181
   433
                        Exceptions.printStackTrace(ex);
raster@14181
   434
                    }
raster@14181
   435
                }
raster@14181
   436
            }
raster@14181
   437
        }
raster@14181
   438
raster@14181
   439
}//GEN-LAST:event_newButtonActionPerformed
raster@14181
   440
raster@14181
   441
    private void PlatformListValueChanged(javax.swing.event.ListSelectionEvent evt) {//GEN-FIRST:event_PlatformListValueChanged
raster@14181
   442
        if (adaPlatform != null) {
raster@14181
   443
            updatePlatform();
raster@14181
   444
        }
raster@15779
   445
        adaPlatform = adaPlatformManager.getPlatform(
raster@14181
   446
                (String) platformListModel.getElementAt(
raster@14181
   447
                PlatformList.getSelectedIndex()));
raster@14181
   448
        loadPlatform();
raster@14181
   449
        platformName.setEditable(false);
raster@14181
   450
    }//GEN-LAST:event_PlatformListValueChanged
raster@14181
   451
raster@14181
   452
    private void removeButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_removeButtonActionPerformed
raster@16367
   453
        if (platformListModel.getSize() > 0) {
raster@16367
   454
            int selectedIndex = PlatformList.getSelectedIndex();
raster@16367
   455
            if (selectedIndex != -1) {
raster@16367
   456
                adaPlatformManager.removePlatform(
raster@16367
   457
                        (String) platformListModel.getElementAt(selectedIndex));
raster@16367
   458
                platformListModel.refresh();
raster@16367
   459
                adaPlatform = null;
raster@16367
   460
                clearPlatform();
raster@16367
   461
            }
raster@14181
   462
        }
raster@14181
   463
}//GEN-LAST:event_removeButtonActionPerformed
raster@14181
   464
raster@14181
   465
    private void makeDefaultButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_makeDefaultButtonActionPerformed
raster@14181
   466
        if (PlatformList.getSelectedIndex() != -1) {
raster@15779
   467
            adaPlatformManager.setDefaultPlatform((String) platformListModel.getElementAt(PlatformList.getSelectedIndex()));
raster@14181
   468
            platformListModel.refresh();
raster@14181
   469
        }
raster@14181
   470
}//GEN-LAST:event_makeDefaultButtonActionPerformed
raster@14181
   471
raster@14181
   472
    private void moveDownPathActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_moveDownPathActionPerformed
raster@14181
   473
        adaPathModel.moveDown(adaPath.getSelectedIndex());
raster@14181
   474
}//GEN-LAST:event_moveDownPathActionPerformed
raster@14181
   475
raster@14181
   476
    private void moveUpPathActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_moveUpPathActionPerformed
raster@14181
   477
        adaPathModel.moveUp(adaPath.getSelectedIndex());
raster@14181
   478
}//GEN-LAST:event_moveUpPathActionPerformed
raster@14181
   479
raster@14181
   480
    private void removePathActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_removePathActionPerformed
raster@14181
   481
        adaPathModel.remove(adaPath.getSelectedIndex());
raster@14181
   482
}//GEN-LAST:event_removePathActionPerformed
raster@14181
   483
raster@14181
   484
    private void addPathActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_addPathActionPerformed
raster@14181
   485
        final JFileChooser fc = new JFileChooser();
raster@14181
   486
        fc.setFileHidingEnabled(false);
raster@14181
   487
        fc.setDialogTitle("Select Ada Lib Directory");
raster@14181
   488
        fc.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES);
raster@14181
   489
        int returnVal = fc.showOpenDialog(this);
raster@14181
   490
        if (returnVal == JFileChooser.APPROVE_OPTION) {
raster@14181
   491
            String cmd = fc.getSelectedFile().getAbsolutePath();
raster@14181
   492
            adaPathModel.add(cmd);
raster@14181
   493
        }
raster@14181
   494
}//GEN-LAST:event_addPathActionPerformed
raster@14181
   495
raster@14698
   496
    private void autoDetectButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_autoDetectButtonActionPerformed
raster@15779
   497
        setAutoDetecting(true);
raster@15779
   498
        RequestProcessor.getDefault().post(new Runnable() {
raster@16367
   499
raster@15779
   500
            public void run() {
raster@15779
   501
                adaPlatformManager.autoDetect();
raster@15779
   502
                EventQueue.invokeLater(new Runnable() {
raster@16367
   503
raster@15779
   504
                    public void run() {
raster@15779
   505
                        platformListModel.refresh();
raster@15779
   506
                        setAutoDetecting(false);
raster@15779
   507
                    }
raster@15779
   508
                });
raster@15779
   509
            }
raster@15779
   510
        });
raster@14698
   511
    }//GEN-LAST:event_autoDetectButtonActionPerformed
raster@14181
   512
    // Variables declaration - do not modify//GEN-BEGIN:variables
raster@14181
   513
    private javax.swing.JList PlatformList;
raster@14181
   514
    private javax.swing.JList adaPath;
raster@14181
   515
    private javax.swing.JPanel adaPathPanel;
raster@14181
   516
    private javax.swing.JButton addPath;
raster@14181
   517
    private javax.swing.JButton autoDetectButton;
raster@15779
   518
    private javax.swing.JLabel autoDetectLabel;
raster@15779
   519
    private javax.swing.JProgressBar autoDetectProgress;
raster@14181
   520
    private javax.swing.JTextField compilerCommand;
raster@14181
   521
    private javax.swing.JLabel compilerCommandLabel;
raster@14181
   522
    private javax.swing.JLabel jLabel5;
raster@14181
   523
    private javax.swing.JLabel jLabel6;
raster@14181
   524
    private javax.swing.JScrollPane jScrollPane2;
raster@16367
   525
    private javax.swing.JTextField jvmCompilerCommand;
raster@16367
   526
    private javax.swing.JLabel jvmCompilerCommandLabel;
raster@14181
   527
    private javax.swing.JPanel mainPanel;
raster@14181
   528
    private javax.swing.JButton makeDefaultButton;
raster@14181
   529
    private javax.swing.JButton moveDownPath;
raster@14181
   530
    private javax.swing.JButton moveUpPath;
raster@14181
   531
    private javax.swing.JButton newButton;
raster@14181
   532
    private javax.swing.JLabel otherInfoLabel;
raster@14181
   533
    private javax.swing.JLabel paltformsListTitleLabel;
raster@14181
   534
    private javax.swing.JTextField platformInfoTextField;
raster@14181
   535
    private javax.swing.JTextField platformName;
raster@14181
   536
    private javax.swing.JScrollPane platformsListScrollPanel;
raster@14181
   537
    private javax.swing.JLabel platfromNameLabel;
raster@14181
   538
    private javax.swing.JButton removeButton;
raster@14181
   539
    private javax.swing.JButton removePath;
raster@14181
   540
    private javax.swing.JTabbedPane tabbedPane;
raster@14181
   541
    // End of variables declaration//GEN-END:variables
raster@15779
   542
    private AdaPlatformManager adaPlatformManager;
raster@14181
   543
    private AdaPlatform adaPlatform;
raster@14181
   544
    private PathListModel adaPathModel = new PathListModel();
raster@14181
   545
    private PlatformListModel platformListModel = new PlatformListModel();
raster@14181
   546
raster@14181
   547
    public static void showPlatformManager() {
raster@14181
   548
        PlatformsCustomizer customizer = new PlatformsCustomizer();
raster@14181
   549
        JButton closeButton = new JButton();
raster@14181
   550
        closeButton.getAccessibleContext().setAccessibleDescription(getMessage("AdaPlatformCustomizer.closeButton.AccessibleContext.accessibleName"));
raster@14181
   551
        Mnemonics.setLocalizedText(closeButton,
raster@14181
   552
                NbBundle.getMessage(PlatformsCustomizer.class, "CTL_Close"));
raster@14181
   553
        DialogDescriptor descriptor = new DialogDescriptor(
raster@14181
   554
                customizer,
raster@14181
   555
                getMessage("CTL_AdaPlatformCustomizer_Title"), // NOI18N
raster@14181
   556
                true,
raster@14181
   557
                new Object[]{closeButton},
raster@14181
   558
                closeButton,
raster@14181
   559
                DialogDescriptor.DEFAULT_ALIGN,
raster@14181
   560
                new HelpCtx(PlatformsCustomizer.class),
raster@14181
   561
                null);
raster@14181
   562
        Dialog dlg = DialogDisplayer.getDefault().createDialog(descriptor);
raster@14181
   563
        dlg.setVisible(true);
raster@14181
   564
        AdaPlatformManager.getInstance().save();
raster@14181
   565
        dlg.dispose();
raster@14181
   566
    }
raster@14181
   567
raster@14181
   568
    private static String getMessage(String key) {
raster@14181
   569
        return NbBundle.getMessage(PlatformsCustomizer.class, key);
raster@14181
   570
    }
raster@14181
   571
raster@14181
   572
    private void updatePlatform() {
raster@14181
   573
        if (!adaPlatform.getName().equals(platformName.getText())) {
raster@15779
   574
            adaPlatformManager.removePlatform(adaPlatform.getName());
raster@14181
   575
            adaPlatform.setName(platformName.getText());
raster@14181
   576
        }
raster@14181
   577
raster@14181
   578
        adaPlatform.setInfo(platformInfoTextField.getText());
raster@16367
   579
        adaPlatform.setGnatCompilerCommand(compilerCommand.getText());
raster@14442
   580
        // TODO: add in main tab the commands list for ada platform
raster@14442
   581
//        adaPlatform.setCompilerPath(adaPathModel.getModel());
raster@15779
   582
        adaPlatformManager.addPlatform(adaPlatform);
raster@14181
   583
    }
raster@14181
   584
raster@14720
   585
    private boolean isDefaultPLatform(String platform) {
raster@15779
   586
        String defaultPlatform = adaPlatformManager.getDefaultPlatform();
raster@14720
   587
        return defaultPlatform != null && !defaultPlatform.equals(platform);
raster@14181
   588
    }
raster@14181
   589
}