📄 searchpanel.java
字号:
package de.uni_bremen.informatik.p2p.plugins.filesharing.gui;
import java.awt.Dimension;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.awt.event.MouseEvent;
import java.util.ArrayList;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JTextField;
import javax.swing.event.MouseInputAdapter;
import de.uni_bremen.informatik.p2p.plugins.filesharing.control.UserInputManager;
import de.uni_bremen.informatik.p2p.plugins.filesharing.control.PeerGroupSearch.DocumentClassifier;
import de.uni_bremen.informatik.p2p.plugins.filesharing.data.SearchResultList;
import de.uni_bremen.informatik.p2p.plugins.filesharing.gui.event.SearchEventListener;
/**
* An object of the class represents the search-userinterface of the
* filesharing plugin.
*
* @author Philipp Hoheisel, Cecile Prigge, Lars Kordes
*/
public class SearchPanel
extends JPanel {
/** Textfield for the searchterms. */
private JTextField searchfield;
/** Button which starts the searchfunction. */
private JButton searchbutton;
/** Table which presents a look on the list of all searchresults. */
private JTable table;
/** Dropdown menu for specifing the typ the user searchs for. */
private JComboBox box;
private String UNSPECIFIED = "Unspecified";
private String AUDIO = "Audio";
private String MISC = "Miscellaneous";
private String PICTURE = "Picture";
private String VIDEO = "Video";
/**
* Constructor.
*
* @param list List to hold results
* @param actlist Buttoneventlistener of all buttons of the filesharing
* gui.
*/
public SearchPanel(ArrayList list,
SearchEventListener actlist) {
// set layout and doublebuffer for graphics
super(null, true);
// setting layout
GridBagLayout gridbag = new GridBagLayout();
GridBagConstraints c = new GridBagConstraints();
setLayout(gridbag);
JPanel panel = createInputPanel(actlist);
//panel.setPreferredSize(new Dimension(1000, 20));
c.fill = GridBagConstraints.BOTH;
c.gridx = 0;
c.gridy = 0;
c.weightx = 0;
c.weighty = 0;
gridbag.setConstraints(panel, c);
add(panel);
// create new table with list
table = new JTable(new SearchResultList(list));
table.addKeyListener(new KeyAdapter() {
public void keyReleased(KeyEvent arg0) {
if(arg0.getKeyCode() == KeyEvent.VK_ENTER) UserInputManager.downloadFile();
}
});
table.addMouseListener(new MouseInputAdapter() {
public void mouseClicked(MouseEvent e) {
if(e.getClickCount() >= 2) UserInputManager.downloadFile();
}
});
JScrollPane scroll = new JScrollPane(table);
//scroll.setPreferredSize(new Dimension(10000,10000));
c.gridx = 0;
c.gridy = 1;
c.weightx = 1;
c.weighty = 1;
gridbag.setConstraints(scroll, c);
// add scrollpane to context
add(scroll);
}
/**
* Returns String of the textfield for the searchterm.
*
* @return Searchterm of the textfield for the searchterm.
*/
public String getSearchString() {
return searchfield.getText();
}
/**
* Method returns the table-ui which represents all searchresults of the
* filesharingplugin.
*
* @return Table-ui which presents all searchresults of the
* filesharingplugin.
*/
public JTable getTable() {
return table;
}
//-------------------------- DOCUMENT LISTENER METHODEN ------------------------------//
/**
* Returns new panel for userinput (e.g. panel with buttons and textfields).
*
* @param actlist Actionlistener
* @return New panel
*/
private JPanel createInputPanel(SearchEventListener actlist) {
JPanel panel = new JPanel();
// creating and adding texfield for searchstring to panelcontext
searchfield = new JTextField(20);
// add actionlistener
searchfield.addActionListener(actlist);
searchfield.addKeyListener(new KeyAdapter() {
public void keyReleased(KeyEvent arg0) {
if(arg0.getKeyCode() == KeyEvent.VK_ENTER) UserInputManager.searchFor();
}
});
// set preferred size
searchfield.setPreferredSize(new Dimension(450, 20));
panel.add(searchfield);
//Searchtype
String[] typs = {"Audio", "Video", "Picture", "Miscellaneous"};
box = new JComboBox(typs);
box.setToolTipText("Choose type for searchrequest.");
// set preferred size
searchfield.setPreferredSize(new Dimension(450, 20));
panel.add(box);
// creating and adding button for sending search request
searchbutton = new JButton(P42_resource_reader.getImageIcon("/search.gif"));
searchbutton.setActionCommand("Search");
searchbutton.setDisabledIcon(P42_resource_reader.getImageIcon("/searchdisabled.gif"));
// tooltip
searchbutton.setToolTipText("Press Button to search");
// set preferred size
searchbutton.setPreferredSize(new Dimension(32, 32));
// add actionlistener
searchbutton.addActionListener(actlist);
panel.add(searchbutton);
// creating button for starting download of a shared file
JButton downloadbutton = new JButton(P42_resource_reader.getImageIcon("/download.gif"));
downloadbutton.setActionCommand("Download");
// tooltip
downloadbutton.setToolTipText("Press Button to download");
// add actionlistener
downloadbutton.addActionListener(actlist);
// set preferred size
downloadbutton.setPreferredSize(new Dimension(32, 32));
// add to context
panel.add(downloadbutton);
// creating button for starting download of a shared file
JButton clearbutton = new JButton(P42_resource_reader.getImageIcon("/clear.gif"));
clearbutton.setActionCommand("Clear");
// tooltip
clearbutton.setToolTipText("Press Button to clear searchlist");
// add actionlistener
clearbutton.addActionListener(actlist);
// set preferred size
clearbutton.setPreferredSize(new Dimension(32, 32));
// add to context
panel.add(clearbutton);
return panel;
}
/**
*
* Returns the selected searchtype
*
* @return SearchType
*/
public int getSearchType() {
String typ = (String)box.getSelectedItem();
if(typ.equals(AUDIO)) {
return DocumentClassifier.AUDIO;
} else if(typ.equals(MISC)) {
return DocumentClassifier.MISC;
} else if(typ.equals(PICTURE)) {
return DocumentClassifier.PIC;
} else if(typ.equals(VIDEO)) {
return DocumentClassifier.VIDEO;
} else return -1;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -