⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 searchpanel.java

📁 peeranha42是jxta的 p2p程序核心
💻 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 + -