/**
* The contents of this file are subject to the license and copyright
* detailed in the LICENSE and NOTICE files at the root of the source
* tree and available online at
*
* http://www.dspace.org/license/
*/
/**
* Copyright (c) 2007, Aberystwyth University
*
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* - Redistributions of source code must retain the above
* copyright notice, this list of conditions and the
* following disclaimer.
*
* - Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in
* the documentation and/or other materials provided with the
* distribution.
*
* - Neither the name of the Centre for Advanced Software and
* Intelligent Systems (CASIS) nor the names of its
* contributors may be used to endorse or promote products derived
* from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
* ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
* TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF
* THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*/
package org.purl.sword.client;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JPasswordField;
/**
* Dialog that prompts the user to enter the details for a service
* document location.
*
* @author Neil Taylor
*/
public class ServiceDialog
{
/**
* The username.
*/
private SWORDComboBox username;
/**
* The password.
*/
private JPasswordField password;
/**
* Holds the URL for the collection.
*/
private SWORDComboBox location;
/**
* The combo box that shows the list of onBehalfOf items.
*/
private SWORDComboBox onBehalfOf;
/**
* Parent frame for the dialog.
*/
private JFrame parentFrame = null;
/**
* The panel that holds the controls.
*/
private JPanel controls = null;
/**
* List of buttons.
*/
private static Object[] options = {"Get Service Document", "Cancel" };
/**
* Create a new instance.
*
* @param parentFrame The parent frame. The dialog will be shown over the
* centre of this frame.
*/
public ServiceDialog(JFrame parentFrame)
{
this.parentFrame = parentFrame;
controls = createControls();
}
/**
* Show the dialog.
*
* @return The close option. This is one of the dialog options from
* JOptionPane.
*/
public int show( )
{
int result = JOptionPane.showOptionDialog(parentFrame,
controls,
"Get Service Document",
JOptionPane.OK_CANCEL_OPTION,
JOptionPane.PLAIN_MESSAGE,
null,
options,
options[1]);
if ( result == JOptionPane.OK_OPTION )
{
// update the combo boxes with the values
username.updateList();
location.updateList();
onBehalfOf.updateList();
}
return result;
}
/**
* Create the controls that are displayed in the dialog.
*
* @return The panel that contains the controls.
*/
protected final JPanel createControls( )
{
username = new SWORDComboBox();
username.setEditable(true);
password = new JPasswordField();
location = new SWORDComboBox();
location.setEditable(true);
onBehalfOf = new SWORDComboBox();
onBehalfOf.setEditable(true);
JLabel userLabel = new JLabel("Username:", JLabel.TRAILING);
JLabel passwordLabel = new JLabel("Password:", JLabel.TRAILING);
JLabel locationLabel = new JLabel("Location:", JLabel.TRAILING);
JLabel onBehalfOfLabel = new JLabel("On Behalf Of:", JLabel.TRAILING);
SWORDFormPanel panel = new SWORDFormPanel();
panel.addFirstRow(userLabel, username);
panel.addRow(passwordLabel, password);
panel.addRow(locationLabel, location);
panel.addRow(onBehalfOfLabel, onBehalfOf);
return panel;
}
/**
* Get the username from the controls on the dialog.
*
* @return The username.
*/
public String getUsername()
{
return username.getText();
}
/**
* Get the password from the dialog.
*
* @return The password.
*/
public String getPassword()
{
return new String(password.getPassword());
}
/**
* The location from the dialog.
*
* @return The location.
*/
public String getLocation()
{
return location.getText();
}
/**
* The onBehalfOf value from the dialog.
*
* @return The onBehalfOf value.
*/
public String getOnBehalfOf()
{
String text = onBehalfOf.getText().trim();
if ( text.length() == 0 )
{
return null;
}
return text;
}
/**
* Add the list of user ids to the dialog.
*
* @param users The list of user ids.
*/
public void addUserIds(String[] users)
{
username.insertItems(users);
}
/**
* Add the list of service URLs.
*
* @param services The service URLs.
*/
public void addServiceUrls(String[] services)
{
location.insertItems(services);
}
/**
* Add a list of onBehalfOf names.
*
* @param users The list of onBehalfOf items.
*/
public void addOnBehalfOf(String[] users)
{
onBehalfOf.insertItems(users);
}
}