/*
* RapidMiner
*
* Copyright (C) 2001-2011 by Rapid-I and the contributors
*
* Complete list of developers available at our web site:
*
* http://rapid-i.com
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see http://www.gnu.org/licenses/.
*/
package com.rapidminer.repository.gui;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.Insets;
import java.net.MalformedURLException;
import java.net.URL;
import javax.swing.JComponent;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JPasswordField;
import javax.swing.JTextField;
import com.rapidminer.gui.tools.ProgressThread;
import com.rapidminer.gui.tools.ResourceLabel;
import com.rapidminer.gui.tools.SwingTools;
import com.rapidminer.repository.Repository;
import com.rapidminer.repository.RepositoryManager;
import com.rapidminer.repository.remote.RemoteRepository;
/** Panel to add remote repositories
*
* @author Simon Fischer
*
*/
public class RemoteRepositoryPanel extends JPanel implements RepositoryConfigurationPanel {
private static final long serialVersionUID = 1L;
private final JTextField urlField = new JTextField("http://localhost:8080/", 30);
private final JTextField aliasField = new JTextField("NewRepository", 30);
private final JTextField userField = new JTextField(System.getProperty("user.name"), 20);
private final JPasswordField passwordField = new JPasswordField(20);
public RemoteRepositoryPanel() {
GridBagLayout gbl = new GridBagLayout();
setLayout(gbl);
GridBagConstraints c = new GridBagConstraints();
c.anchor = GridBagConstraints.FIRST_LINE_START;
c.weighty = 1;
c.weightx = .5;
c.insets = new Insets(4, 4, 4, 4);
// ALIAS
c.gridwidth = GridBagConstraints.RELATIVE;
JLabel label = new ResourceLabel("repositorydialog.alias");
label.setLabelFor(aliasField);
gbl.setConstraints(label, c);
add(label);
c.gridwidth = GridBagConstraints.REMAINDER;
gbl.setConstraints(aliasField, c);
add(aliasField);
// URL
c.gridwidth = GridBagConstraints.RELATIVE;
label = new ResourceLabel("repositorydialog.url");
label.setLabelFor(urlField);
gbl.setConstraints(label, c);
add(label);
c.gridwidth = GridBagConstraints.REMAINDER;
gbl.setConstraints(urlField, c);
add(urlField);
// USERNAME
c.gridwidth = GridBagConstraints.RELATIVE;
c.insets = new Insets(10, 4, 4, 4);
label = new ResourceLabel("repositorydialog.user");
label.setLabelFor(userField);
gbl.setConstraints(label, c);
add(label);
c.gridwidth = GridBagConstraints.REMAINDER;
gbl.setConstraints(userField, c);
add(userField);
// Password
c.insets = new Insets(4, 4, 4, 4);
c.gridwidth = GridBagConstraints.RELATIVE;
label = new ResourceLabel("repositorydialog.password");
label.setLabelFor(passwordField);
gbl.setConstraints(label, c);
add(label);
c.gridwidth = GridBagConstraints.REMAINDER;
gbl.setConstraints(passwordField, c);
add(passwordField);
aliasField.selectAll();
urlField.selectAll();
userField.selectAll();
}
@Override
public void makeRepository() {
final URL url;
try {
url = new URL(urlField.getText());
} catch (MalformedURLException e) {
SwingTools.showSimpleErrorMessage("illegal_url",e);
return;
}
String alias = aliasField.getText().trim();
if (alias.length() == 0) {
alias = url.toString();
}
final String finalAlias = alias;
ProgressThread pt = new ProgressThread("add_repository") {
@Override
public void run() {
getProgressListener().setTotal(100);
getProgressListener().setCompleted(10);
Repository repository = new RemoteRepository(url, finalAlias, userField.getText(), passwordField.getPassword(), false);
getProgressListener().setCompleted(90);
if (repository != null) {
RepositoryManager.getInstance(null).addRepository(repository);
}
getProgressListener().setCompleted(100);
getProgressListener().complete();
}
};
pt.start();
}
@Override
public void configureUIElementsFrom(Repository remote) {
aliasField.setText(((RemoteRepository) remote).getAlias());
urlField.setText(((RemoteRepository) remote).getBaseUrl().toString());
userField.setText(((RemoteRepository) remote).getUsername());
}
@Override
public boolean configure(Repository repository) {
URL url;
try {
url = new URL(urlField.getText());
} catch (MalformedURLException e) {
SwingTools.showSimpleErrorMessage("illegal_url",e);
return false;
}
((RemoteRepository) repository).setBaseUrl(url);
if ((passwordField.getPassword() != null) && (passwordField.getPassword().length > 0)) {
((RemoteRepository) repository).setPassword(passwordField.getPassword());
}
((RemoteRepository) repository).setUsername(userField.getText());
((RemoteRepository) repository).rename(aliasField.getText());
return true;
}
@Override
public JComponent getComponent() {
return this;
}
}