package org.chartsy.main;
import java.beans.PropertyEditorManager;
import java.io.File;
import java.io.IOException;
import java.util.logging.Level;
import java.util.logging.Logger;
import java.util.prefs.Preferences;
import javax.swing.JFrame;
import org.chartsy.main.managers.AnnotationManager;
import org.chartsy.main.managers.ChartManager;
import org.chartsy.main.managers.DataProviderManager;
import org.chartsy.main.managers.FacebookManager;
import org.chartsy.main.managers.IndicatorManager;
import org.chartsy.main.managers.OverlayManager;
import org.chartsy.main.managers.ProxyManager;
import org.chartsy.main.managers.StockManager;
import org.chartsy.main.managers.TemplateManager;
import org.chartsy.main.managers.TwitterManager;
import org.chartsy.main.utils.AlphaPropertyEditor;
import org.chartsy.main.utils.FileUtils;
import org.chartsy.main.utils.PricePropertyEditor;
import org.chartsy.main.utils.StrokePropertyEditor;
import org.openide.DialogDisplayer;
import org.openide.NotifyDescriptor;
import org.openide.filesystems.FileUtil;
import org.openide.filesystems.Repository;
import org.openide.modules.ModuleInstall;
import org.openide.util.NbPreferences;
import org.openide.windows.WindowManager;
public class Installer extends ModuleInstall implements Runnable
{
private Preferences chartsyPreferences = NbPreferences.root().node("/org/chartsy/register");
private Preferences printPreferences = NbPreferences.root().node("/org/netbeans/modules/print");
private Preferences autoUpdatePreferences = NbPreferences.root().node("/org/netbeans/modules/autoupdate");
private static final Logger LOG = Logger.getLogger(Installer.class.getName());
@Override public void run()
{
System.setProperty("sun.java2d.opengl", "true");
System.setProperty("sun.java2d.d3d", "false");
addKeystore();
setPrintProperties();
boolean registred = chartsyPreferences.getBoolean("registred", false);
if (!registred)
{
RegisterForm register = new RegisterForm(new JFrame(), true);
register.setLocationRelativeTo(WindowManager.getDefault().getMainWindow());
register.setVisible(true);
}
}
public @Override void restored()
{
WindowManager.getDefault().invokeWhenUIReady(this);
PropertyEditorManager.registerEditor(int.class, StrokePropertyEditor.class);
PropertyEditorManager.registerEditor(String.class, PricePropertyEditor.class);
PropertyEditorManager.registerEditor(int.class, AlphaPropertyEditor.class);
ProxyManager.getDefault();
DataProviderManager.getDefault();
ChartManager.getDefault();
IndicatorManager.getDefault();
OverlayManager.getDefault();
AnnotationManager.getDefault();
TemplateManager.getDefault();
StockManager.getDefault();
FacebookManager.getDefault();
TwitterManager.getDefault();
}
public @Override boolean closing()
{
NotifyDescriptor descriptor = new NotifyDescriptor.Confirmation(
"Do you really want to exit the application?",
"Exit",
NotifyDescriptor.YES_NO_OPTION);
Object retval = DialogDisplayer.getDefault().notify(descriptor);
if (retval.equals(NotifyDescriptor.YES_OPTION))
return true;
else
return false;
}
private File getChacheDirectory()
{
File cacheDir = null;
String userDir = System.getProperty("netbeans.user");
if (userDir != null)
{
cacheDir = new File(new File(new File(userDir, "var"), "cache"), "catalogcache");
}
else
{
@SuppressWarnings({"deprecation"})
File dir = FileUtil.toFile(Repository.getDefault().getDefaultFileSystem().getRoot());
cacheDir = new File(dir, "cachecatalog");
}
cacheDir.mkdirs();
return cacheDir;
}
private File getSrcFile()
{ return new File(new File(new File(new File(
System.getProperty("netbeans.home"))
.getParentFile(), "chartsy"), "core"), "user.ks");
}
private File getDestFile()
{ return new File(getChacheDirectory(), "user.ks"); }
private void addKeystore()
{
try
{
if (!chartsyPreferences.getBoolean("ks.init", false)
&& getSrcFile().exists())
{
FileUtils.copyFile(getSrcFile(), getDestFile());
autoUpdatePreferences.put("userKS", "user.ks");
autoUpdatePreferences.put("period", "1");
chartsyPreferences.putBoolean("ks.init", true);
}
}
catch (IOException ex)
{
LOG.log(Level.INFO, "", ex);
chartsyPreferences.putBoolean("ks.init", false);
}
}
private void setPrintProperties()
{
if (!chartsyPreferences.getBoolean("print.init", false))
{
printPreferences.put("print.area.height", "697.8897637795276");
printPreferences.put("print.area.width", "451.2755905511811");
printPreferences.put("print.area.x", "72.0");
printPreferences.put("print.area.y", "72.0");
printPreferences.put("print.border", "false");
printPreferences.put("print.border.color", "0,0,0");
printPreferences.put("print.footer", "false");
printPreferences.put("print.footer.center", "");
printPreferences.put("print.footer.color", "0,0,0");
printPreferences.put("print.footer.font", "Serif,0,10");
printPreferences.put("print.footer.left", "%ROW%.%COLUMN% of %COUNT%");
printPreferences.put("print.footer.right", "%MODIFIED_DATE% %MODIFIED_TIME%");
printPreferences.put("print.header", "false");
printPreferences.put("print.header.center", "");
printPreferences.put("print.header.color", "0,0,0");
printPreferences.put("print.header.font", "Serif,0,10");
printPreferences.put("print.header.left", "%NAME%");
printPreferences.put("print.header.right", "");
printPreferences.put("print.page.orientation", "0.0");
printPreferences.put("print.paper.height", "841.8897637795276");
printPreferences.put("print.paper.width", "595.275590551181");
printPreferences.put("print.text.as.editor", "false");
printPreferences.put("print.text.background.color", "255,250,255");
printPreferences.put("print.text.color", "0,0,0");
printPreferences.put("print.text.font", "Monospaced,0,10");
printPreferences.put("print.text.line.numbers", "false");
printPreferences.put("print.text.line.spacing", "1.0");
printPreferences.put("print.text.selection", "false");
printPreferences.put("print.text.use.color", "true");
printPreferences.put("print.text.use.font", "true");
printPreferences.put("print.text.wrap.lines", "false");
printPreferences.put("print.zoom", "0.0");
chartsyPreferences.putBoolean("print.init", true);
}
}
}