/* * Copyright 2007 - 2017 the original author or authors. * * Licensed 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 net.sf.jailer.ui; import java.awt.Color; import java.util.HashSet; import java.util.List; import java.util.Set; import javax.swing.event.DocumentEvent; import javax.swing.event.DocumentListener; /** * New Data Model Dialog. * * @author Ralf Wisser */ public class NewDataModelDialog extends javax.swing.JDialog { private static final long serialVersionUID = 486596745983098673L; private final Set<String> existingFoldersLC; private Color initialFGColor; private String nameEntered = null; /** Creates new form NewDataModelDialog */ public NewDataModelDialog(java.awt.Frame parent, List<String> existingFolders) { super(parent, true); this.existingFoldersLC = new HashSet<String>(); for (String s: existingFolders) { existingFoldersLC.add(s.toLowerCase()); } initComponents(); pack(); setSize(Math.max(400, getWidth()), getHeight()); setLocation(parent.getX() + (parent.getWidth() - getWidth()) / 2, parent.getY() + (parent.getHeight() - getHeight()) / 2); UIUtil.initPeer(); UIUtil.fit(this); initialFGColor = folderTextField.getForeground(); nameTextField.setText(""); nameTextField.getDocument().addDocumentListener(new DocumentListener() { @Override public void changedUpdate(DocumentEvent e) { checkName(); } @Override public void insertUpdate(DocumentEvent e) { checkName(); } @Override public void removeUpdate(DocumentEvent e) { checkName(); } }); checkName(); setVisible(true); } private boolean checkName() { Color red = Color.red; folderTextField.setText(folderName(nameTextField.getText())); if (nameTextField.getText().trim().length() == 0) { createButton.setEnabled(false); folderTextField.setForeground(initialFGColor); return false; } else { if (existingFoldersLC.contains(folderTextField.getText().toLowerCase())) { createButton.setEnabled(false); folderTextField.setForeground(red); return false; } else { createButton.setEnabled(true); folderTextField.setForeground(initialFGColor); return true; } } } private String folderName(String name) { name = name.trim().replaceAll("[^ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789]+", "-"); return name; } /** 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. */ // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents private void initComponents() { java.awt.GridBagConstraints gridBagConstraints; jPanel1 = new javax.swing.JPanel(); createButton = new javax.swing.JButton(); jButton2 = new javax.swing.JButton(); jPanel2 = new javax.swing.JPanel(); jLabel1 = new javax.swing.JLabel(); jLabel2 = new javax.swing.JLabel(); nameTextField = new javax.swing.JTextField(); folderTextField = new javax.swing.JTextField(); setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE); setTitle("New Data Model"); getContentPane().setLayout(new java.awt.GridBagLayout()); jPanel1.setLayout(new java.awt.GridBagLayout()); createButton.setText("Create New Data Model"); createButton.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { createButtonActionPerformed(evt); } }); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 1; gridBagConstraints.gridy = 1; gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST; gridBagConstraints.weightx = 1.0; jPanel1.add(createButton, gridBagConstraints); jButton2.setText("Cancel"); jButton2.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jButton2ActionPerformed(evt); } }); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 2; gridBagConstraints.gridy = 1; jPanel1.add(jButton2, gridBagConstraints); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 1; gridBagConstraints.gridy = 10; gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH; gridBagConstraints.weightx = 1.0; gridBagConstraints.insets = new java.awt.Insets(0, 0, 0, 4); getContentPane().add(jPanel1, gridBagConstraints); jPanel2.setLayout(new java.awt.GridBagLayout()); jLabel1.setText("Name"); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 1; gridBagConstraints.gridy = 1; gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; jPanel2.add(jLabel1, gridBagConstraints); jLabel2.setText("Folder "); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 1; gridBagConstraints.gridy = 2; gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; jPanel2.add(jLabel2, gridBagConstraints); nameTextField.setText("jTextField1"); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 2; gridBagConstraints.gridy = 1; gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; gridBagConstraints.weightx = 1.0; jPanel2.add(nameTextField, gridBagConstraints); folderTextField.setEditable(false); folderTextField.setText("jTextField1"); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 2; gridBagConstraints.gridy = 2; gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; gridBagConstraints.weightx = 1.0; jPanel2.add(folderTextField, gridBagConstraints); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 1; gridBagConstraints.gridy = 1; gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH; gridBagConstraints.weightx = 1.0; gridBagConstraints.weighty = 1.0; gridBagConstraints.insets = new java.awt.Insets(14, 4, 14, 4); getContentPane().add(jPanel2, gridBagConstraints); pack(); }// </editor-fold>//GEN-END:initComponents private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton2ActionPerformed setVisible(false); }//GEN-LAST:event_jButton2ActionPerformed private void createButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_createButtonActionPerformed if (checkName()) { nameEntered = nameTextField.getText().trim(); } setVisible(false); }//GEN-LAST:event_createButtonActionPerformed // Variables declaration - do not modify//GEN-BEGIN:variables private javax.swing.JButton createButton; private javax.swing.JTextField folderTextField; private javax.swing.JButton jButton2; private javax.swing.JLabel jLabel1; private javax.swing.JLabel jLabel2; private javax.swing.JPanel jPanel1; private javax.swing.JPanel jPanel2; private javax.swing.JTextField nameTextField; // End of variables declaration//GEN-END:variables /** * Gets the name entered, or <code>null</code> if no name has entered. */ public String getNameEntered() { return nameEntered; } public String getFolderName() { return folderName(nameEntered); } }