You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
115 lines
2.7 KiB
115 lines
2.7 KiB
/*
|
|
* Copyright (c) 1998, 2000, Oracle and/or its affiliates. All rights reserved.
|
|
* ORACLE PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
|
|
*
|
|
*
|
|
*
|
|
*
|
|
*
|
|
*
|
|
*
|
|
*
|
|
*
|
|
*
|
|
*
|
|
*
|
|
*
|
|
*
|
|
*
|
|
*
|
|
*
|
|
*
|
|
*
|
|
*
|
|
*/
|
|
package javax.swing.text.html;
|
|
|
|
import java.awt.*;
|
|
import java.awt.event.*;
|
|
import java.net.URLEncoder;
|
|
import java.net.MalformedURLException;
|
|
import java.io.IOException;
|
|
import java.net.URL;
|
|
import javax.swing.text.*;
|
|
import javax.swing.*;
|
|
|
|
|
|
/**
|
|
* A view that supports the <ISINDEX< tag. This is implemented
|
|
* as a JPanel that contains
|
|
*
|
|
* @author Sunita Mani
|
|
*/
|
|
|
|
class IsindexView extends ComponentView implements ActionListener {
|
|
|
|
JTextField textField;
|
|
|
|
/**
|
|
* Creates an IsindexView
|
|
*/
|
|
public IsindexView(Element elem) {
|
|
super(elem);
|
|
}
|
|
|
|
/**
|
|
* Creates the components necessary to to implement
|
|
* this view. The component returned is a <code>JPanel</code>,
|
|
* that contains the PROMPT to the left and <code>JTextField</code>
|
|
* to the right.
|
|
*/
|
|
public Component createComponent() {
|
|
AttributeSet attr = getElement().getAttributes();
|
|
|
|
JPanel panel = new JPanel(new BorderLayout());
|
|
panel.setBackground(null);
|
|
|
|
String prompt = (String)attr.getAttribute(HTML.Attribute.PROMPT);
|
|
if (prompt == null) {
|
|
prompt = UIManager.getString("IsindexView.prompt");
|
|
}
|
|
JLabel label = new JLabel(prompt);
|
|
|
|
textField = new JTextField();
|
|
textField.addActionListener(this);
|
|
panel.add(label, BorderLayout.WEST);
|
|
panel.add(textField, BorderLayout.CENTER);
|
|
panel.setAlignmentY(1.0f);
|
|
panel.setOpaque(false);
|
|
return panel;
|
|
}
|
|
|
|
/**
|
|
* Responsible for processing the ActionEvent.
|
|
* In this case this is hitting enter/return
|
|
* in the text field. This will construct the
|
|
* URL from the base URL of the document.
|
|
* To the URL is appended a '?' followed by the
|
|
* contents of the JTextField. The search
|
|
* contents are URLEncoded.
|
|
*/
|
|
public void actionPerformed(ActionEvent evt) {
|
|
|
|
String data = textField.getText();
|
|
if (data != null) {
|
|
data = URLEncoder.encode(data);
|
|
}
|
|
|
|
|
|
AttributeSet attr = getElement().getAttributes();
|
|
HTMLDocument hdoc = (HTMLDocument)getElement().getDocument();
|
|
|
|
String action = (String) attr.getAttribute(HTML.Attribute.ACTION);
|
|
if (action == null) {
|
|
action = hdoc.getBase().toString();
|
|
}
|
|
try {
|
|
URL url = new URL(action+"?"+data);
|
|
JEditorPane pane = (JEditorPane)getContainer();
|
|
pane.setPage(url);
|
|
} catch (MalformedURLException e1) {
|
|
} catch (IOException e2) {
|
|
}
|
|
}
|
|
}
|