package org.chartsy.stockscanpro.actions;
import java.awt.Container;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.URL;
import java.util.logging.Level;
import java.util.logging.Logger;
import java.util.prefs.Preferences;
import javax.swing.JButton;
import org.apache.commons.httpclient.NameValuePair;
import org.chartsy.main.managers.ProxyManager;
import org.chartsy.main.utils.FileUtils;
import org.chartsy.stockscanpro.ui.QueryPanel;
import org.chartsy.stockscanpro.ui.ScanLoaderPanel;
import org.chartsy.stockscanpro.ui.StockScanToolbar;
import org.openide.DialogDescriptor;
import org.openide.DialogDisplayer;
import org.openide.filesystems.FileObject;
import org.openide.filesystems.FileUtil;
import org.openide.filesystems.XMLFileSystem;
import org.openide.loaders.DataFolder;
import org.openide.nodes.Node;
import org.openide.util.NbBundle;
import org.openide.util.NbPreferences;
/**
*
* @author Viorel
*/
public class LoadScansAction implements ActionListener
{
private static final Logger LOG = Logger.getLogger(LoadScansAction.class.getPackage().getName());
public LoadScansAction()
{}
public void actionPerformed(ActionEvent e)
{
QueryPanel queryPanel = null;
Object obj = e.getSource();
if (obj instanceof JButton)
{
JButton btn = (JButton) obj;
Container container = btn.getParent();
if (container instanceof StockScanToolbar)
queryPanel = ((StockScanToolbar) container).getQueryPanel();
else
queryPanel = null;
}
if (queryPanel != null)
{
ScanLoaderPanel panel = new ScanLoaderPanel(queryPanel);
DialogDescriptor descriptor
= new DialogDescriptor(panel, "Load Scan", true, null);
descriptor.setMessageType(DialogDescriptor.PLAIN_MESSAGE);
descriptor.setOptions(new Object[]
{
DialogDescriptor.OK_OPTION,
DialogDescriptor.CANCEL_OPTION
});
panel.addNotify();
Object ret = DialogDisplayer.getDefault().notify(descriptor);
if (ret.equals(DialogDescriptor.OK_OPTION))
{
panel.loadScan();
panel.removeNotify();
}
else
{
panel.removeNotify();
}
}
}
public static Node getRootNode()
{
boolean copied = false;
Preferences preferences = NbPreferences.root().node("/org/chartsy/register");
try
{
FileObject dest = FileUtil.createData(FileUtils.stockScanFile("loadScans.xml"));
NameValuePair[] query = new NameValuePair[]
{
new NameValuePair("option", "com_chartsy"),
new NameValuePair("view", "loadscans"),
new NameValuePair("format", "raw"),
new NameValuePair("username", preferences.get("username", "")),
new NameValuePair("passwd", preferences.get("password", ""))
};
InputStream inputStream = ProxyManager.getDefault().inputStreamPOST(
NbBundle.getMessage(LoadScansAction.class, "StockScanPRO_URL"),
query);
OutputStream outputStream = dest.getOutputStream();
FileUtil.copy(inputStream, outputStream);
inputStream.close();
outputStream.close();
copied = true;
}
catch (IOException ex)
{
copied = false;
LOG.log(Level.SEVERE, "", ex);
}
if (copied)
{
try
{
URL fileURL = FileUtils.stockScanFile("loadScans.xml").toURL();
XMLFileSystem fileSystem = new XMLFileSystem();
fileSystem.setXmlUrl(fileURL);
FileObject fileObject = fileSystem.findResource("StockScanFolders");
DataFolder dataFolder = DataFolder.findFolder(fileObject);
return dataFolder.getNodeDelegate();
}
catch (Exception ex)
{
LOG.log(Level.SEVERE, "", ex);
}
}
return null;
}
}