Package net.datacrow.console.windows

Source Code of net.datacrow.console.windows.ItemSynchronizerDialog

/******************************************************************************
*                                     __                                     *
*                              <-----/@@\----->                              *
*                             <-< <  \\//  > >->                             *
*                               <-<-\ __ /->->                               *
*                               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;

import java.awt.GridBagConstraints;
import java.awt.Insets;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Collection;

import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.JComboBox;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;

import net.datacrow.console.ComponentFactory;
import net.datacrow.console.Layout;
import net.datacrow.console.components.DcLongTextField;
import net.datacrow.console.components.DcProgressBar;
import net.datacrow.console.components.panels.OnlineServicePanel;
import net.datacrow.console.components.panels.OnlineServiceSettingsPanel;
import net.datacrow.core.DataCrow;
import net.datacrow.core.DcRepository;
import net.datacrow.core.modules.DcModule;
import net.datacrow.core.modules.DcModules;
import net.datacrow.core.resources.DcResources;
import net.datacrow.core.services.Region;
import net.datacrow.core.services.SearchMode;
import net.datacrow.core.services.plugin.IServer;
import net.datacrow.settings.DcSettings;
import net.datacrow.settings.Settings;
import net.datacrow.synchronizers.ISynchronizerClient;
import net.datacrow.synchronizers.Synchronizer;

public class ItemSynchronizerDialog extends DcDialog implements ActionListener, ISynchronizerClient {
   
    private DcProgressBar progressBar = new DcProgressBar();
    private JTextArea textLog = ComponentFactory.getTextArea();
    private JButton buttonStart = ComponentFactory.getButton(DcResources.getText("lblRun"));
    private JButton buttonStop = ComponentFactory.getButton(DcResources.getText("lblStop"));
    private JButton buttonClose = ComponentFactory.getButton(DcResources.getText("lblClose"));
    private DcLongTextField textHelp = ComponentFactory.getLongTextField();
   
    private JComboBox cbItemPickMode = ComponentFactory.getComboBox();
   
    private JCheckBox checkReparseFiles = ComponentFactory.getCheckBox(DcResources.getText("lblReparseMusicFiles"));
   
    private OnlineServiceSettingsPanel panelOnlineServiceSettings;
    private OnlineServicePanel panelServer;
    private Synchronizer synchronizer;
   
    private final int module;
    private boolean cancelled = true;
    private final boolean canParseFiles;
   
    public ItemSynchronizerDialog(DcModule module) {
        super(DataCrow.mainFrame);

        this.module = module.getIndex();
        this.synchronizer = module.getSynchronizer();
        this.canParseFiles = synchronizer.canParseFiles();

        setTitle(synchronizer.getTitle());
        setHelpIndex(synchronizer.getHelpIndex());

        buildDialog(module.getOnlineServices().getServers());
       
        pack();
       
        setSize(module.getSettings().getDimension(DcRepository.ModuleSettings.stSynchronizerDialogSize));
        setCenteredLocation();
       
        enableActions(true);
    }
   
    private void saveSettings() {
        panelOnlineServiceSettings.save();

        Settings settings = DcModules.get(module).getSettings();
        if (panelServer.getServer() != null)
            settings.set(DcRepository.ModuleSettings.stMassUpdateServer, panelServer.getServer().getName());
        if (panelServer.getRegion() != null)
            settings.set(DcRepository.ModuleSettings.stMassUpdateRegion, panelServer.getRegion().getCode());
        if (panelServer.getMode() != null)
            settings.set(DcRepository.ModuleSettings.stMassUpdateMode, panelServer.getMode().getDisplayName());
       
    }
   
    protected void synchronize() {
        saveSettings();
        synchronizer.synchronize(this);
    }
   
    @Override
    public boolean isReparseFiles() {
        return checkReparseFiles.isSelected();
    }
   
    @Override
    public boolean useOnlineService() {
        return panelServer.useOnlineService();
    }
   
    @Override
    public int getItemPickMode() {
        return cbItemPickMode.getSelectedIndex() < 1 ?
               Synchronizer._ALL : Synchronizer._SELECTED;
    }

    @Override
    public void initialize() {
        cancelled = false;
        initProgressBar(0);
        enableActions(false);
    }
   
    protected void cancel() {
        cancelled = true;
        enableActions(true);
    }
   
    @Override
    public boolean isCancelled() {
        return cancelled;
    }
   
    @Override
    public void close() {
       
        saveSettings();
       
        cancel();

        if (cbItemPickMode.getSelectedIndex() > -1)
            DcSettings.set(DcRepository.Settings.stMassUpdateItemPickMode,
                           Long.valueOf(cbItemPickMode.getSelectedIndex()));
       
        cancelled = true;
       
        progressBar = null;
        textLog = null;
        buttonStart = null;
        buttonClose = null;
        textHelp = null;
        buttonStop = null;
       
        panelOnlineServiceSettings.save();
        panelOnlineServiceSettings.clear();
        panelOnlineServiceSettings = null;
       
        panelServer.clear();
        panelServer = null;
        synchronizer = null;
        cbItemPickMode = null;
       
        DcModules.get(module).setSetting(DcRepository.ModuleSettings.stSynchronizerDialogSize, getSize());

        super.close();
    }   
   
    @Override
    public IServer getServer() {
        return panelServer.getServer();
    }

    @Override
    public SearchMode getSearchMode() {
        return panelServer.getMode();
    }
   
    @Override
    public Region getRegion() {
        return panelServer.getRegion();
    }
   
    @Override
    public void enableActions(boolean b) {
        if (buttonStart != null)
            buttonStart.setEnabled(b);
       
        if (buttonStop != null)
            buttonStop.setEnabled(!b);
       
        if (!b) {
            progressBar.setValue(0);
            textLog.setText("");
        }
    }   
   
    @Override
    public void addMessage(String message) {
        if (textLog != null)
            textLog.insert(message + '\n', 0);
    }

    @Override
    public void initProgressBar(int maxValue) {
        progressBar.setValue(0);
        progressBar.setMaximum(maxValue);
    }

    @Override
    public void updateProgressBar() {
        if (progressBar != null)
            progressBar.setValue(progressBar.getValue() + 1);
    }
   
    private void buildDialog(Collection<IServer> servers) {
        getContentPane().setLayout(Layout.getGBL());

        //**********************************************************
        //Help panel
        //**********************************************************
        textHelp.setText(synchronizer.getHelpText());
        textHelp.setBorder(null);

        JScrollPane helpScroller = new JScrollPane(textHelp);
        helpScroller.setBorder(null);
        helpScroller.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
        helpScroller.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_NEVER);
        textHelp.setEditable(false);
       
        //**********************************************************
        //Settings panel
        //**********************************************************
        JPanel panelSettings = new JPanel();
        panelSettings.setLayout(Layout.getGBL());
        panelSettings.setBorder(ComponentFactory.getTitleBorder(DcResources.getText("lblSettings")));
       
        panelSettings.add(ComponentFactory.getLabel(DcResources.getText("lblUpdatingWhichItems")),
                Layout.getGBC(0, 0, 1, 1, 1.0, 1.0,
                GridBagConstraints.NORTHWEST, GridBagConstraints.NONE,
                new Insets(5, 5, 5, 5), 0, 0));
        panelSettings.add(cbItemPickMode,
                Layout.getGBC(1, 0, 1, 1, 1.0, 1.0,
                GridBagConstraints.NORTHWEST, GridBagConstraints.HORIZONTAL,
                new Insets(5, 5, 5, 5), 0, 0));
       
        cbItemPickMode.addItem(DcResources.getText("lblAllItemsInView"));
        cbItemPickMode.addItem(DcResources.getText("lblSelectedItemsOnly"));
        cbItemPickMode.setSelectedIndex(DcSettings.getInt(DcRepository.Settings.stMassUpdateItemPickMode));
       
        //**********************************************************
        //Online Server panel
        //**********************************************************
        panelServer = new OnlineServicePanel(servers, true, canParseFiles ? true : false);
        Settings settings = DcModules.get(module).getSettings();
        panelServer.setServer(settings.getString(DcRepository.ModuleSettings.stMassUpdateServer));
        panelServer.setMode(settings.getString(DcRepository.ModuleSettings.stMassUpdateMode));
        panelServer.setRegion(settings.getString(DcRepository.ModuleSettings.stMassUpdateRegion));

        //**********************************************************
        //Online Server Settings panel
        //**********************************************************
        panelOnlineServiceSettings = new OnlineServiceSettingsPanel(null, false, false, true, true, module);

        //**********************************************************
        //Re-parse panel
        //**********************************************************
        JPanel panelReparse = new JPanel();
       
        if (canParseFiles) {
            panelReparse.setLayout(Layout.getGBL());
            panelReparse.setBorder(ComponentFactory.getTitleBorder(DcResources.getText("lblMusicFileProcessingConfig")));
           
            panelReparse.add(checkReparseFiles, Layout.getGBC(0, 0, 1, 1, 1.0, 1.0
                            ,GridBagConstraints.NORTHWEST, GridBagConstraints.HORIZONTAL,
                             new Insets(5, 5, 5, 5), 0, 0));
            checkReparseFiles.setSelected(true);
        }
       
        //**********************************************************
        //Log panel
        //**********************************************************
        JPanel panelLog = new JPanel();
        panelLog.setLayout(Layout.getGBL());
       
        JScrollPane logScroller = new JScrollPane(textLog);
        logScroller.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);

        panelLog.setBorder(ComponentFactory.getTitleBorder(DcResources.getText("lblLog")));
        panelLog.add(logScroller, Layout.getGBC(0, 0, 1, 1, 1.0, 1.0
                    ,GridBagConstraints.NORTHWEST, GridBagConstraints.BOTH,
                    new Insets(5, 5, 5, 5), 0, 0));


        //**********************************************************
        //Action panel
        //**********************************************************
        JPanel panelActions = new JPanel();
       
        buttonStart.addActionListener(this);
        buttonStart.setActionCommand("synchronize");
        buttonClose.addActionListener(this);
        buttonClose.setActionCommand("close");
        buttonStop.addActionListener(this);
        buttonStop.setActionCommand("cancel");
       
        panelActions.add(buttonStart);
        panelActions.add(buttonStop);
        panelActions.add(buttonClose);
       
        //**********************************************************
        //Main
        //**********************************************************
        getContentPane().add(helpScroller,      Layout.getGBC(0, 0, 1, 1, 3.0, 3.0
                ,GridBagConstraints.NORTHWEST, GridBagConstraints.BOTH,
                 new Insets(5, 5, 5, 5), 0, 0));
        getContentPane().add(panelSettings,     Layout.getGBC(0, 1, 1, 1, 1.0, 1.0
                ,GridBagConstraints.NORTHWEST, GridBagConstraints.BOTH,
                 new Insets(5, 5, 5, 5), 0, 0));
        getContentPane().add(panelServer,       Layout.getGBC(0, 2, 1, 1, 1.0, 1.0
                ,GridBagConstraints.NORTHWEST, GridBagConstraints.BOTH,
                 new Insets(5, 5, 5, 5), 0, 0));
        getContentPane().add(panelReparse,      Layout.getGBC(0, 3, 1, 1, 1.0, 1.0
                ,GridBagConstraints.NORTHWEST, GridBagConstraints.HORIZONTAL,
                 new Insets(5, 5, 5, 5), 0, 0));
        getContentPane().add(panelOnlineServiceSettings,     Layout.getGBC(0, 4, 1, 1, 1.0, 1.0
                ,GridBagConstraints.NORTHWEST, GridBagConstraints.BOTH,
                 new Insets(5, 5, 5, 5), 0, 0));
        getContentPane().add(panelActions,      Layout.getGBC( 0, 5, 1, 1, 1.0, 1.0
                ,GridBagConstraints.NORTHEAST, GridBagConstraints.NONE,
                 new Insets(0, 0, 0, 0), 0, 0));
        getContentPane().add(panelLog,          Layout.getGBC( 0, 6, 1, 1, 5.0, 5.0
                ,GridBagConstraints.SOUTHWEST, GridBagConstraints.BOTH,
                 new Insets(0, 0, 0, 0), 0, 0));
        getContentPane().add(progressBar,       Layout.getGBC( 0, 7, 1, 1, 1.0, 1.0
                ,GridBagConstraints.SOUTHWEST, GridBagConstraints.HORIZONTAL,
                 new Insets(0, 0, 0, 0), 0, 0));
    }

    @Override
    public void actionPerformed(ActionEvent ae) {
        if (ae.getActionCommand().equals("close"))
            close();
        else if (ae.getActionCommand().equals("cancel"))
            cancel();
        else if (ae.getActionCommand().equals("synchronize"))
            synchronize();
    }
}
TOP

Related Classes of net.datacrow.console.windows.ItemSynchronizerDialog

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.