Package net.datacrow.console.windows.onlinesearch

Source Code of net.datacrow.console.windows.onlinesearch.OnlineServicePanel

/******************************************************************************
*                                     __                                     *
*                              <-----/@@\----->                              *
*                             <-< <  \\//  > >->                             *
*                               <-<-\ __ /->->                               *
*                               Data /  \ Crow                               *
*                                   ^    ^                                   *
*                              info@datacrow.net                             *
*                                                                            *
*                       This file is part of Data Crow.                      *
*       Data Crow is free software; you can redistribute it and/or           *
*        modify it under the terms of the GNU General Public                 *
*       License as published by the Free Software Foundation; either         *
*              version 3 of the License, or any later version.               *
*                                                                            *
*        Data Crow is distributed in the hope that it will be useful,        *
*      but WITHOUT ANY WARRANTY; without even the implied warranty of        *
*           MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.             *
*           See the GNU General Public License for more details.             *
*                                                                            *
*        You should have received a copy of the GNU General Public           *
*  License along with this program. If not, see http://www.gnu.org/licenses  *
*                                                                            *
******************************************************************************/

package net.datacrow.console.windows.onlinesearch;

import java.awt.Dimension;
import java.awt.GridBagConstraints;
import java.awt.Insets;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;

import javax.swing.DefaultComboBoxModel;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;

import net.datacrow.console.ComponentFactory;
import net.datacrow.console.Layout;
import net.datacrow.console.components.AwsKeyRequestDialog;
import net.datacrow.core.DcRepository;
import net.datacrow.core.IconLibrary;
import net.datacrow.core.objects.DcObject;
import net.datacrow.core.resources.DcResources;
import net.datacrow.core.services.OnlineServices;
import net.datacrow.core.services.Region;
import net.datacrow.core.services.SearchMode;
import net.datacrow.core.services.plugin.IServer;
import net.datacrow.settings.DcSettings;

public class OnlineServicePanel extends JPanel implements ActionListener, KeyListener  {
   
    private JButton buttonSearch;
    private JTextField fldQuery;

    private JButton buttonStop = ComponentFactory.getButton(DcResources.getText("lblStop"));
   
    private JComboBox comboRegions = ComponentFactory.getComboBox(new DefaultComboBoxModel());
    private JComboBox comboModes = ComponentFactory.getComboBox(new DefaultComboBoxModel());
    private JComboBox comboServers = ComponentFactory.getComboBox(new DefaultComboBoxModel());
   
    private boolean listenForServerChanges = true;
    private boolean perfectMatchOccured = false;

    private OnlineSearchForm osf;
    private OnlineServices os;
   
    public OnlineServicePanel(OnlineSearchForm osf, OnlineServices os) {
        this.osf = osf;
        this.os = os;
        build(true);
        applySettings();
    }

    public void hasPerfectMatchOccured(boolean b) {
        perfectMatchOccured = b;
    }
   
    public boolean hasPerfectMatchOccured() {
        return perfectMatchOccured;
    }
   
    public String getQuery() {
        return fldQuery.getText().trim();
    }
   
    public void setQuery(String query) {
        fldQuery.setText(query);
    }   
   
    public SearchMode getMode() {
        IServer server = getServer();
        SearchMode mode = null;
        if (server.getSearchModes() != null && server.getSearchModes().size() > 0) {
            mode = (SearchMode) comboModes.getSelectedItem();
        }
        return mode;
    }
   
    public IServer getServer() {
        return (IServer) comboServers.getSelectedItem();
    }

    public Region getRegion() {
        IServer server = getServer();
        Region region = null;
        if (server.getRegions() != null && server.getRegions().size() > 0) {
            region = (Region) comboRegions.getSelectedItem();
        }
        return region;
    }
   
    protected void busy(boolean b) {
        if (b) {
            buttonSearch.setEnabled(false);
            buttonStop.setEnabled(true);
            buttonStop.requestFocus();
        } else {
            buttonSearch.setEnabled(true);
            buttonStop.setEnabled(false);

            if (perfectMatchOccured) {
                fldQuery.setText("");
                fldQuery.requestFocusInWindow();
            } else {
                fldQuery.requestFocusInWindow();
            }
        }
    }

    protected void setFocus() {
        fldQuery.requestFocusInWindow();
        fldQuery.setSelectionStart(0);
        fldQuery.setSelectionEnd(fldQuery.getText().length());
    }   
   
    protected void save() {
        String server = getServer() != null ? getServer().getName() : null;
        String mode = getMode() != null ? getMode().toString() : null;
        String region = getRegion() != null ? getRegion().getCode() : null;

        osf.getModule().setSetting(DcRepository.ModuleSettings.stOnlineSearchDefaultMode, mode);
        osf.getModule().setSetting(DcRepository.ModuleSettings.stOnlineSearchDefaultServer, server);
        osf.getModule().setSetting(DcRepository.ModuleSettings.stOnlineSearchDefaultRegion, region);       
    }
   
    protected void clear() {
        buttonSearch = null;
        fldQuery = null;
        buttonStop = null;
        comboRegions = null;
        comboModes = null;
        comboServers = null;
        osf = null;
        os = null;
    }   
   
    private void applySettings() {
        DcObject dco = osf.getDcObject();
        if (dco != null) {
            IServer server = os.getServer(dco);
            if (server != null) {
                comboServers.setSelectedItem(server);
               
                Region region = os.getRegion(dco);
                if (region != null) comboRegions.setSelectedItem(region);
               
                SearchMode mode = os.getMode(dco);
                if (mode != null) comboModes.setSelectedItem(mode);

                String query = os.getQuery(dco);
                if (query != null && !query.toLowerCase().equals("null"))
                    fldQuery.setText(query.trim());
               
                return;
            }
        }
       
        if (os.getDefaultServer() != null)
            comboServers.setSelectedItem(os.getDefaultServer());
        else
            comboServers.setSelectedIndex(0);
       
        if (os.getDefaultRegion() != null)
            comboRegions.setSelectedItem(os.getDefaultRegion());
           
        if (os.getDefaultSearchMode() != null)
            comboModes.setSelectedItem(os.getDefaultSearchMode());
    }
   
    private void openServerSettingsDialog() {
        ServerSettingsDialog dlg = new ServerSettingsDialog(osf, getServer());
        dlg.setVisible(true);
    }
       
    private void rebuild() {
        listenForServerChanges = false;
        removeAll();
        build(false);
        revalidate();
        repaint();
       
        IServer server = getServer();
        if (    server != null &&
                server.getName().equals("Amazon") &&
               !DcSettings.getBoolean(DcRepository.Settings.stAmazonFirstStartChecked)) {
           
            new AwsKeyRequestDialog();
        }
       
        listenForServerChanges = true;
    }   
   
    private void build(boolean initialize) {
        setLayout(Layout.getGBL());
       
        if (initialize) {
            fldQuery = ComponentFactory.getShortTextField(255);
            fldQuery.addKeyListener(this);           
            fldQuery.setPreferredSize(new Dimension(100, ComponentFactory.getPreferredFieldHeight()));
            fldQuery.setMinimumSize(new Dimension(100, ComponentFactory.getPreferredFieldHeight()));
       
            buttonStop.addActionListener(osf);
            buttonStop.setActionCommand("stopsearch");
           
            comboServers.setActionCommand("changeserver");
           
            for (IServer server : osf.getServers())
                comboServers.addItem(server);

            comboServers.addActionListener(this);
        }
       
        IServer server = getServer();
        JLabel labelServer = ComponentFactory.getLabel(DcResources.getText("lblInternetServer"));
       
        int stretchX = server.getSearchModes() != null && server.getSearchModes().size() > 0 ? 1 : 2;
        JLabel labelSearch = ComponentFactory.getLabel(DcResources.getText("lblSearchFor"));
        add(labelSearch,  Layout.getGBC( 0, 0, 1, 1, 1.0, 1.0
                         ,GridBagConstraints.WEST, GridBagConstraints.HORIZONTAL,
                          new Insets(5, 5, 5, 5), 0, 0));
        add(fldQuery,     Layout.getGBC( 1, 0, stretchX, 1, 10.0, 10.0
                         ,GridBagConstraints.WEST, GridBagConstraints.HORIZONTAL,
                          new Insets(5, 5, 5, 5), 0, 0));               

        if (server.getSearchModes() != null && server.getSearchModes().size() > 0) {
            comboModes.removeAllItems();
            for (SearchMode mode : server.getSearchModes())
                comboModes.addItem(mode);

            add(comboModes,   Layout.getGBC( 2, 0, 1, 1, 10.0, 10.0
                             ,GridBagConstraints.WEST, GridBagConstraints.HORIZONTAL,
                              new Insets(5, 5, 5, 5), 0, 0));
        }
 
        comboRegions.removeAllItems();
        for (Region region : server.getRegions())
            comboRegions.addItem(region);

        buttonSearch = ComponentFactory.getButton(DcResources.getText("lblFind"));
        buttonSearch.addActionListener(osf);
        buttonSearch.setActionCommand("search");
        buttonSearch.setMnemonic('F');
       
       
        // servers panel
        JPanel panelServers = new JPanel();
        panelServers.setLayout(Layout.getGBL());
        JButton btServerSettings = ComponentFactory.getIconButton(IconLibrary._icoSettings16);
        btServerSettings.setActionCommand("serversettings");
        btServerSettings.addActionListener(this);
        panelServers.add(comboServers, Layout.getGBC( 0, 0, 1, 1, 100.0, 100.0
                ,GridBagConstraints.WEST, GridBagConstraints.HORIZONTAL,
                 new Insets(5, 5, 5, 5), 0, 0));
       
        if (server.getSettings() != null)
            panelServers.add(btServerSettings, Layout.getGBC( 1, 0, 1, 1, 1.0, 10.0
                    ,GridBagConstraints.EAST, GridBagConstraints.NONE,
                     new Insets(5, 0, 5, 0), 0, 0));
       

        // main panel
        add(labelServer,  Layout.getGBC( 0, 1, 1, 1, 1.0, 1.0
                         ,GridBagConstraints.WEST, GridBagConstraints.HORIZONTAL,
                          new Insets(5, 5, 5, 5), 0, 0));
        add(panelServers, Layout.getGBC( 1, 1, 1, 1, 10.0, 10.0
                         ,GridBagConstraints.EAST, GridBagConstraints.HORIZONTAL,
                          new Insets(0, 0, 0, 0), 0, 0));
        add(comboRegions, Layout.getGBC( 2, 1, 1, 1, 10.0, 10.0
                         ,GridBagConstraints.EAST, GridBagConstraints.HORIZONTAL,
                          new Insets(5, 5, 5, 5), 0, 0));
        add(buttonSearch, Layout.getGBC( 3, 1, 1, 1, 1.0, 1.0
                         ,GridBagConstraints.EAST, GridBagConstraints.HORIZONTAL,
                          new Insets(5, 5, 5, 5), 0, 0));
        add(buttonStop,   Layout.getGBC(4, 1, 1, 1, 1.0, 1.0
                         ,GridBagConstraints.EAST, GridBagConstraints.HORIZONTAL,
                          new Insets(5, 5, 5, 5), 0, 0));     
    }
   
    @Override
    public void actionPerformed(ActionEvent e) {
        if (e.getActionCommand().equals("stopsearch")) {
            osf.stop();
        } else if (e.getActionCommand().equals("changeserver") && listenForServerChanges) {
            rebuild();
        } else if (e.getActionCommand().equals("search")) {
            perfectMatchOccured = false;
            osf.start();
        } else if (e.getActionCommand().equals("serversettings")) {
            openServerSettingsDialog();
        }
    }

    @Override
    public void keyPressed(KeyEvent e) {
        if (e.getKeyCode() == KeyEvent.VK_ENTER) {
            perfectMatchOccured = false;
            osf.start();
        }
    }

    @Override
    public void keyReleased(KeyEvent e) {}
    @Override
    public void keyTyped(KeyEvent e) {}
}
TOP

Related Classes of net.datacrow.console.windows.onlinesearch.OnlineServicePanel

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.