/** Returns true if the user entered a valid, non-empty repository location. */
 public boolean hasSelection(boolean allowFolders) {
   if (!allowFolders
       && ((enforceValidRepositoryEntryName && locationFieldRepositoryEntry.getText().isEmpty())
           || (!enforceValidRepositoryEntryName && locationField.getText().isEmpty())
           || (enforceValidRepositoryEntryName
               && !RepositoryLocation.isNameValid(locationFieldRepositoryEntry.getText())))) {
     return false;
   } else {
     try {
       getRepositoryLocation();
       return true;
     } catch (MalformedRepositoryLocationException e) {
       // LogService.getRoot().warning("Malformed repository location: " + e);
       LogService.getRoot()
           .log(
               Level.WARNING,
               I18N.getMessage(
                   LogService.getRoot().getResourceBundle(),
                   "com.rapidminer.repository.gui.RepositoryLocationChooser.malformed_repository_location",
                   e),
               e);
       return false;
     }
   }
 }
 public String getRepositoryLocation() throws MalformedRepositoryLocationException {
   if (tree.getSelectionPath() != null) {
     Entry selectedEntry = (Entry) tree.getSelectionPath().getLastPathComponent();
     RepositoryLocation selectedLocation = selectedEntry.getLocation();
     if (selectedEntry instanceof Folder) {
       if (enforceValidRepositoryEntryName) {
         selectedLocation =
             new RepositoryLocation(selectedLocation, locationFieldRepositoryEntry.getText());
       } else {
         selectedLocation = new RepositoryLocation(selectedLocation, locationField.getText());
       }
     }
     if (RepositoryLocationChooser.this.resolveRelativeTo != null && resolveBox.isSelected()) {
       return selectedLocation.makeRelative(RepositoryLocationChooser.this.resolveRelativeTo);
     } else {
       return selectedLocation.getAbsoluteLocation();
     }
   } else {
     if (enforceValidRepositoryEntryName) {
       return locationFieldRepositoryEntry.getText();
     } else {
       return locationField.getText();
     }
   }
 }
 public RepositoryEntryInputDialog(String key, String text, Object... arguments) {
   super("input." + key, true, arguments);
   this.okButton = makeOkButton();
   this.cancelButton = makeCancelButton();
   if (text != null) {
     textField.setText(text);
   }
   textField.addObserver(this, true);
   layoutDefault(textField, okButton, cancelButton);
   textField.triggerCheck();
 }
 private void updateResult() {
   try {
     String repositoryLocation = getRepositoryLocation();
     resultLabel.setText(repositoryLocation);
   } catch (MalformedRepositoryLocationException e) {
     // LogService.getRoot().log(Level.WARNING, "Malformed location: " + e, e);
     LogService.getRoot()
         .log(
             Level.WARNING,
             I18N.getMessage(
                 LogService.getRoot().getResourceBundle(),
                 "com.rapidminer.repository.gui.RepositoryLocationChooser.malformed_location",
                 e),
             e);
   }
   if ((currentEntry instanceof Folder)
       && !enforceValidRepositoryEntryName
       && locationField.getText().isEmpty()) {
     this.folderSelected = true;
   }
   if ((currentEntry instanceof Folder)
       && enforceValidRepositoryEntryName
       && locationFieldRepositoryEntry.getText().isEmpty()) {
     this.folderSelected = true;
   } else {
     this.folderSelected = false;
   }
   for (ChangeListener l : listeners) {
     l.stateChanged(new ChangeEvent(this));
   }
 }
 public String getInputText() {
   return textField.getText();
 }
  public RepositoryLocationChooser(
      Dialog owner,
      RepositoryLocation resolveRelativeTo,
      String initialValue,
      final boolean allowEntries,
      final boolean allowFolders,
      boolean enforceValidRepositoryEntryName,
      final boolean onlyWriteableRepositories) {
    if (initialValue != null) {
      try {
        RepositoryLocation repositoryLocation;
        if (resolveRelativeTo != null) {
          repositoryLocation = new RepositoryLocation(resolveRelativeTo, initialValue);
        } else {
          repositoryLocation = new RepositoryLocation(initialValue);
        }
        locationField.setText(repositoryLocation.getName());
        locationFieldRepositoryEntry.setText(repositoryLocation.getName());
        resultLabel.setText(repositoryLocation.toString());
      } catch (Exception e) {
      }
    }
    this.resolveRelativeTo = resolveRelativeTo;
    this.enforceValidRepositoryEntryName = enforceValidRepositoryEntryName;
    tree = new RepositoryTree(owner, !allowEntries, onlyWriteableRepositories);

    if (initialValue != null) {
      if (tree.expandIfExists(resolveRelativeTo, initialValue)) {
        locationField.setText("");
        locationFieldRepositoryEntry.setText("");
      }
    }
    tree.getSelectionModel()
        .addTreeSelectionListener(
            new TreeSelectionListener() {

              @Override
              public void valueChanged(TreeSelectionEvent e) {
                if (e.getPath() != null) {
                  currentEntry = (Entry) e.getPath().getLastPathComponent();
                  if (currentEntry instanceof Folder) { //  && allowFolders)) {
                    //						locationField.setText("");
                  } else if ((!(currentEntry instanceof Folder)) && allowEntries) {
                    //					if (true) {
                    //							//!(currentEntry instanceof Folder)) {
                    locationField.setText(currentEntry.getLocation().getName());
                    locationFieldRepositoryEntry.setText(currentEntry.getLocation().getName());
                  }
                  updateResult();
                }
              }
            });
    KeyListener keyListener =
        new KeyListener() {
          @Override
          public void keyPressed(KeyEvent e) {}

          @Override
          public void keyReleased(KeyEvent e) {
            updateResult();
          }

          @Override
          public void keyTyped(KeyEvent e) {
            TreePath selectionPath = tree.getSelectionPath();
            if (selectionPath != null) {
              Entry selectedEntry = (Entry) selectionPath.getLastPathComponent();
              if (!(selectedEntry instanceof Folder)) {
                tree.setSelectionPath(selectionPath.getParentPath());
              }
            }
          }
        };
    locationField.addKeyListener(keyListener);
    locationFieldRepositoryEntry.addKeyListener(keyListener);
    locationFieldRepositoryEntry.addObserver(this, true);

    setLayout(new GridBagLayout());
    GridBagConstraints c = new GridBagConstraints();
    c.insets = new Insets(0, 0, 0, 0);
    c.fill = GridBagConstraints.BOTH;
    c.weightx = 1;
    c.weighty = 1;
    c.anchor = GridBagConstraints.FIRST_LINE_START;
    c.gridwidth = GridBagConstraints.REMAINDER;

    JScrollPane treePane = new ExtendedJScrollPane(tree);
    treePane.setBorder(ButtonDialog.createBorder());
    add(treePane, c);

    c.insets = new Insets(ButtonDialog.GAP, 0, 0, ButtonDialog.GAP);
    c.fill = GridBagConstraints.HORIZONTAL;
    c.weightx = 0;
    c.weighty = 0;
    c.gridwidth = GridBagConstraints.RELATIVE;
    c.weightx = 0;
    locationLabel = new ResourceLabel("repository_chooser.entry_name");
    locationLabel.setLabelFor(locationField);
    add(locationLabel, c);

    c.weightx = 1;
    c.insets = new Insets(ButtonDialog.GAP, 0, 0, 0);
    c.weightx = 1;
    c.gridwidth = GridBagConstraints.REMAINDER;
    add(locationField, c);
    add(locationFieldRepositoryEntry, c);
    if (enforceValidRepositoryEntryName) {
      locationField.setVisible(false);
    } else {
      locationFieldRepositoryEntry.setVisible(false);
    }

    c.gridwidth = GridBagConstraints.RELATIVE;
    c.weightx = 0;
    c.insets = new Insets(ButtonDialog.GAP, 0, 0, ButtonDialog.GAP);
    add(new ResourceLabel("repository_chooser.location"), c);
    c.weightx = 1;
    c.insets = new Insets(ButtonDialog.GAP, 0, 0, 0);
    c.gridwidth = GridBagConstraints.REMAINDER;
    add(resultLabel, c);

    if (resolveRelativeTo != null) {
      resolveBox =
          new JCheckBox(
              new ResourceActionAdapter(
                  "repository_chooser.resolve", resolveRelativeTo.getAbsoluteLocation()));
      resolveBox.setSelected(
          ParameterService.getParameterValue(
                  RapidMinerGUI.PROPERTY_RESOLVE_RELATIVE_REPOSITORY_LOCATIONS)
              .equals("true"));
      add(resolveBox, c);
      resolveBox.addActionListener(
          new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
              updateResult();
            }
          });
    }
  }