//The MIT License
//
// Copyright (c) 2004 Mindswap Research Group, University of Maryland, College Park
//
// Permission is hereby granted, free of charge, to any person obtaining a copy
// of this software and associated documentation files (the "Software"), to
// deal in the Software without restriction, including without limitation the
// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
// sell copies of the Software, and to permit persons to whom the Software is
// furnished to do so, subject to the following conditions:
//
// The above copyright notice and this permission notice shall be included in
// all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
// IN THE SOFTWARE.
package org.mindswap.swoop.annotea;
import java.awt.BorderLayout;
import java.awt.Font;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.net.URL;
import java.util.ArrayList;
import java.util.List;
import javax.swing.JButton;
import javax.swing.JComponent;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JList;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextField;
import javax.swing.border.EtchedBorder;
/**
* @author Aditya
*
* TODO To change the template for this generated type comment go to
* Window - Preferences - Java - Code Generation - Code and Comments
*/
public class AnnoteaServerPrefs extends JFrame {
Font tahoma = new Font("Tahoma", Font.PLAIN, 11);
List serverRList, serverPList;
public AnnoteaServerPrefs() {
serverRList = new ArrayList();
serverRList.add("http://www.mindswap.org/2004/annotea/Annotation");
serverPList = new ArrayList();
serverPList.add("http://www.mindswap.org/2004/annotea/Annotation");
setupUI();
}
private JButton createButton(String lbl, String tooltip) {
JButton btn = new JButton(lbl);
btn.setFont(tahoma);
btn.setToolTipText(tooltip);
return btn;
}
private JTextField createField(String lbl) {
JTextField fld = new JTextField(lbl);
fld.setFont(tahoma);
return fld;
}
private JPanel createBox(String txt, JComponent comp) {
JPanel panel = new JPanel();
panel.setLayout(new BorderLayout());
JLabel lbl = new JLabel(txt);
lbl.setFont(tahoma);
panel.add(lbl, "West");
panel.add(comp, "Center");
return panel;
}
private void setupUI() {
JLabel topLbl = new JLabel("Retrieve Annotations from the following servers:");
topLbl.setFont(new Font("Tahoma", Font.BOLD, 10));
final JTextField serverFld = new JTextField();
JPanel serverFldPanel = createBox("Server URL:", serverFld);
JPanel serverTopPanel = new JPanel();
serverTopPanel.setLayout(new BorderLayout());
serverTopPanel.add(serverFldPanel, "Center");
JButton addServerBtn = createButton("Add", "Add URL to Server List");
serverTopPanel.add(addServerBtn, "East");
serverTopPanel.add(topLbl, "North");
JPanel retrPanel = new JPanel();
retrPanel.setLayout(new BorderLayout());
retrPanel.add(serverTopPanel, "North");
final JList serverLst = new JList();
serverLst.setFont(tahoma);
serverLst.setListData(serverRList.toArray());
JScrollPane serverPane = new JScrollPane(serverLst);
retrPanel.add(serverPane, "Center");
final JLabel serverListLbl = new JLabel("Server List: 1 present");
serverListLbl.setFont(tahoma);
retrPanel.add(serverListLbl, "South");
retrPanel.setBorder(new EtchedBorder());
addServerBtn.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
if (!isURL(serverFld.getText())) {
JOptionPane.showMessageDialog(null, "Invalid URL entered", "Error", JOptionPane.ERROR_MESSAGE);
return;
}
serverRList.add(serverFld.getText());
serverLst.setListData(serverRList.toArray());
serverListLbl.setText("Server List: "+serverRList.size()+ " present");
}
});
serverLst.addKeyListener(new KeyListener() {
public void keyPressed(KeyEvent e) {
int key = e.getKeyCode();
if (key==127) {
// delete server URL entry
serverRList.remove(serverLst.getSelectedIndex());
serverLst.setListData(serverRList.toArray());
serverListLbl.setText("Server List: "+serverRList.size()+ " present");
}
}
public void keyReleased(KeyEvent arg0) {}
public void keyTyped(KeyEvent arg0) {}
});
JLabel topLbl2 = new JLabel("Post Annotations to the following servers:");
topLbl2.setFont(new Font("Tahoma", Font.BOLD, 10));
final JTextField serverFld2 = new JTextField();
JPanel serverFldPanel2 = createBox("Server URL:", serverFld2);
JPanel serverTopPanel2 = new JPanel();
serverTopPanel2.setLayout(new BorderLayout());
serverTopPanel2.add(serverFldPanel2, "Center");
JButton addServerBtn2 = createButton("Add", "Add URL to Server List");
serverTopPanel2.add(addServerBtn2, "East");
serverTopPanel2.add(topLbl2, "North");
final JList serverLst2 = new JList();
serverLst2.setFont(tahoma);
serverLst2.setListData(serverPList.toArray());
JScrollPane serverPane2 = new JScrollPane(serverLst2);
final JLabel serverListLbl2 = new JLabel("Server List: 1 present");
serverListLbl2.setFont(tahoma);
JPanel postPanel = new JPanel();
postPanel.setLayout(new BorderLayout());
postPanel.add(serverTopPanel2, "North");
postPanel.add(serverPane2, "Center");
postPanel.add(serverListLbl2, "South");
postPanel.setBorder(new EtchedBorder());
addServerBtn2.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
if (!isURL(serverFld2.getText())) {
JOptionPane.showMessageDialog(null, "Invalid URL entered", "Error", JOptionPane.ERROR_MESSAGE);
return;
}
serverPList.add(serverFld2.getText());
serverLst2.setListData(serverPList.toArray());
serverListLbl2.setText("Server List: "+serverPList.size()+ " present");
}
});
serverLst2.addKeyListener(new KeyListener() {
public void keyPressed(KeyEvent e) {
int key = e.getKeyCode();
if (key==127) {
// delete server URL entry
serverPList.remove(serverLst2.getSelectedIndex());
serverLst2.setListData(serverPList.toArray());
serverListLbl2.setText("Server List: "+serverPList.size()+ " present");
}
}
public void keyReleased(KeyEvent arg0) {}
public void keyTyped(KeyEvent arg0) {}
});
getContentPane().setLayout(new GridLayout(2,1));
getContentPane().add(retrPanel);
getContentPane().add(postPanel);
setSize(400,400);
setLocation(260,200);
setResizable(false);
setTitle("Annotea Preferences");
hide();
}
private boolean isURL(String urlStr) {
try {
URL url = new URL(urlStr);
return true;
}
catch (Exception e) {
return false;
}
}
}