package org.mbs3.juniuploader.gui;
import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Vector;
import java.util.prefs.Preferences;
import javax.swing.BorderFactory;
import javax.swing.JLabel;
import javax.swing.DefaultComboBoxModel;
import javax.swing.JButton;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JSeparator;
import javax.swing.JTabbedPane;
import javax.swing.UIManager;
import javax.swing.border.BevelBorder;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.mbs3.juniuploader.StatusThread;
import org.mbs3.juniuploader.jUniUploader;
import org.mbs3.juniuploader.objects.UAInterface;
import org.mbs3.juniuploader.objects.localobjects.WDirectory;
import org.mbs3.juniuploader.objects.remoteobjects.FormPairGroup;
import org.mbs3.juniuploader.objects.remoteobjects.UploadRule;
import org.mbs3.juniuploader.objects.remoteobjects.UploadSite;
import org.mbs3.juniuploader.util.*;
/**
* This code was edited or generated using CloudGarden's Jigloo
* SWT/Swing GUI Builder, which is free for non-commercial
* use. If Jigloo is being used commercially (ie, by a corporation,
* company or business for any purpose whatever) then you
* should purchase a license for each developer using Jigloo.
* Please visit www.cloudgarden.com for details.
* Use of Jigloo implies acceptance of these licensing terms.
* A COMMERCIAL LICENSE HAS NOT BEEN PURCHASED FOR
* THIS MACHINE, SO JIGLOO OR THIS CODE CANNOT BE USED
* LEGALLY FOR ANY CORPORATE OR COMMERCIAL PURPOSE.
*/
public class frmMain extends javax.swing.JFrame {
public static final long serialVersionUID = 1L;
private JMenuItem helpMenuItem;
private JMenu jMenu5;
private JMenuItem deleteMenuItem;
private JSeparator jSeparator1;
private JMenuItem pasteMenuItem;
private pnlFormVariables pnlFormVariables1;
private pnlUploadSites pnlUploadSites1;
private pnlRemoteInterface pnlRemoteInterface1;
private pnlWoWDirectories pnlWoWDirectories1;
private pnlMainMenu pnlMainMenu1;
private pnlDebug pnlDebug1;
private JTabbedPane jTabbedPane1;
private JMenuItem copyMenuItem;
private JMenuItem cutMenuItem;
private JMenu jMenu4;
private JMenuItem exitMenuItem;
private JSeparator jSeparator2;
private pnlUploadRules pnlUploadRules1;
private JMenuItem closeFileMenuItem;
private JMenuItem saveAsMenuItem;
private JMenuItem saveMenuItem;
private JMenuItem openFileMenuItem;
private JMenuItem newFileMenuItem;
private JMenu jMenu3;
private JMenuBar jMenuBar1;
public static Preferences prefs = Prefs.getPrefs();
private static Log log = LogFactory.getLog(frmMain.class);
private pnlAbout pnlAbout1;
private pnlSettings pnlLoggingOptions1;
public static JLabel lblStatus;
public static DefaultComboBoxModel wowDirectories;
public static DefaultComboBoxModel uploadLocations;
public static DefaultComboBoxModel uploadRules;
public static DefaultComboBoxModel formGroups;
public static DefaultComboBoxModel formPairValues;
public static DefaultComboBoxModel accounts;
public static DefaultComboBoxModel luaFiles;
public static FileMonitor fileMon;
public frmMain() {
super();
log.debug("Main form constructor, configuring Look&Feel and initializing Uploader object");
frmMain.retrievePreferences();
try {
UIManager.setLookAndFeel(System.getProperty(Prefs.class.getName() + ".lookandfeelclassname"));
} catch (Exception ex) {
log.error("Failed to set the look and feel to the saved preference, this may be fatal.", ex);
}
initGUI();
fileMon = FileMonitor.getInstance();
log.debug("GUI created, ready to perform any and all operations");
}
public static void retrievePreferences()
{
Vector wd = WDirectory.retrievePreferences();
if(!(wd.size() > 0))
wd = WDirectory.rescanDirectories();
Vector us = UploadSite.retrievePreferences();
Vector fpg = FormPairGroup.retrievePreferences();
Vector ur = new Vector();
UploadRule.retrievePreferences(ur, us, fpg, wd);
frmMain.uploadLocations = new DefaultComboBoxModel(us);
frmMain.uploadRules = new DefaultComboBoxModel(ur);
frmMain.formGroups = new DefaultComboBoxModel(fpg);
formGroups.addElement(new FormPairGroup("none"));
uploadLocations = new DefaultComboBoxModel(us);
wowDirectories = new DefaultComboBoxModel(wd);
}
public static void storePreferences()
{
// fixed after refactor
WDirectory.storePreferences(Util.DCBMtoVector(wowDirectories));
// fixed after refactor
UploadSite.storePreferences(Util.DCBMtoVector(uploadLocations));
// fixed after refactor
FormPairGroup.storePreferences(Util.DCBMtoVector(formGroups));
// fixed?
UploadRule.storePreferences(Util.DCBMtoVector(uploadRules));
}
private void initGUI() {
try {
BorderLayout thisLayout = new BorderLayout();
getContentPane().setLayout(thisLayout);
this.setTitle("jUniUploader " + jUniUploader.VERSION);
{
lblStatus = new JLabel();
getContentPane().add(lblStatus, BorderLayout.SOUTH);
lblStatus.setText("Lots of status text will go here");
lblStatus.setBorder(BorderFactory.createBevelBorder(BevelBorder.LOWERED));
}
{
jTabbedPane1 = new JTabbedPane();
getContentPane().add(jTabbedPane1, BorderLayout.CENTER);
jTabbedPane1.setPreferredSize(new java.awt.Dimension(665, 402));
{
pnlMainMenu1 = new pnlMainMenu();
jTabbedPane1.addTab(
"Main Menu",
null,
getPnlMainMenu1(),
null);
}
{
pnlWoWDirectories1 = new pnlWoWDirectories();
jTabbedPane1.addTab(
"WoW Directories",
null,
getPnlWoWDirectories1(),
null);
}
{
pnlRemoteInterface1 = new pnlRemoteInterface();
jTabbedPane1.addTab(
"UniAdmin Interface",
null,
getPnlRemoteInterface1(),
null);
}
{
pnlUploadSites1 = new pnlUploadSites();
jTabbedPane1.addTab(
"Upload Sites",
null,
getPnlUploadSites1(),
null);
}
{
pnlFormVariables1 = new pnlFormVariables();
jTabbedPane1.addTab(
"Form Variables",
null,
getPnlFormVariables1(),
null);
}
{
pnlUploadRules1 = new pnlUploadRules();
jTabbedPane1.addTab(
"Upload Rules",
null,
getPnlUploadRules1(),
null);
}
{
pnlDebug1 = new pnlDebug();
jTabbedPane1.addTab("Debug Log", null, pnlDebug1, null);
}
{
pnlLoggingOptions1 = new pnlSettings();
jTabbedPane1.addTab(
"Application Settings",
null,
getPnlLoggingOptions1(),
null);
}
{
pnlAbout1 = new pnlAbout();
jTabbedPane1.addTab("About", null, getPnlAbout1(), null);
}
}
this.setSize(673, 456);
jMenuBar1 = new JMenuBar();
setJMenuBar(jMenuBar1);
jMenu3 = new JMenu();
jMenuBar1.add(jMenu3);
jMenu3.setText("File");
newFileMenuItem = new JMenuItem();
jMenu3.add(newFileMenuItem);
newFileMenuItem.setText("New");
openFileMenuItem = new JMenuItem();
jMenu3.add(openFileMenuItem);
openFileMenuItem.setText("Open");
saveMenuItem = new JMenuItem();
jMenu3.add(saveMenuItem);
saveMenuItem.setText("Save");
saveAsMenuItem = new JMenuItem();
jMenu3.add(saveAsMenuItem);
saveAsMenuItem.setText("Save As ...");
closeFileMenuItem = new JMenuItem();
jMenu3.add(closeFileMenuItem);
closeFileMenuItem.setText("Close");
jSeparator2 = new JSeparator();
jMenu3.add(jSeparator2);
exitMenuItem = new JMenuItem();
jMenu3.add(exitMenuItem);
exitMenuItem.setText("Exit");
exitMenuItem.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
exitMenuItemActionPerformed(evt);
}
});
jMenu4 = new JMenu();
jMenuBar1.add(jMenu4);
jMenu4.setText("Edit");
jMenu4.setEnabled(false);
cutMenuItem = new JMenuItem();
jMenu4.add(cutMenuItem);
cutMenuItem.setText("Cut");
copyMenuItem = new JMenuItem();
jMenu4.add(copyMenuItem);
copyMenuItem.setText("Copy");
pasteMenuItem = new JMenuItem();
jMenu4.add(pasteMenuItem);
pasteMenuItem.setText("Paste");
jSeparator1 = new JSeparator();
jMenu4.add(jSeparator1);
deleteMenuItem = new JMenuItem();
jMenu4.add(deleteMenuItem);
deleteMenuItem.setText("Delete");
jMenu5 = new JMenu();
jMenuBar1.add(jMenu5);
jMenu5.setText("Help");
helpMenuItem = new JMenuItem();
jMenu5.add(helpMenuItem);
helpMenuItem.setText("Help");
} catch (Exception ex) {
log.error("Error", ex);
}
}
public pnlDebug getPnlDebug1() {
return pnlDebug1;
}
private void exitMenuItemActionPerformed(ActionEvent evt) {
System.exit(0);
}
public pnlMainMenu getPnlMainMenu1() {
return pnlMainMenu1;
}
public pnlWoWDirectories getPnlWoWDirectories1() {
return pnlWoWDirectories1;
}
public pnlRemoteInterface getPnlRemoteInterface1() {
return pnlRemoteInterface1;
}
public pnlUploadSites getPnlUploadSites1() {
return pnlUploadSites1;
}
public pnlFormVariables getPnlFormVariables1() {
return pnlFormVariables1;
}
public pnlUploadRules getPnlUploadRules1() {
return pnlUploadRules1;
}
public pnlSettings getPnlLoggingOptions1() {
return pnlLoggingOptions1;
}
public pnlAbout getPnlAbout1() {
return pnlAbout1;
}
public static void removeWDirectory(WDirectory dir)
{
Vector toRemove = new Vector();
for(int i = 0; i < wowDirectories.getSize(); i++)
{
WDirectory wd = (WDirectory)wowDirectories.getElementAt(i);
if(dir.equals(wd))
{
log.trace("removeWDirectory() removed " + dir);
toRemove.add(wd);
}
}
for(int i = 0; i < toRemove.size(); i++)
wowDirectories.removeElement(toRemove.get(i));
}
public static void doAllUploads(final JButton btn)
{
log.trace("RemoteSystem: doAllUpload() called");
org.mbs3.juniuploader.StatusThread.addMessage("Spinning off upload threads for every rule");
//final Vector urs = uploadRules;
Runnable go = new Runnable() {
public void run() {
if(btn.isEnabled())
btn.setEnabled(false);
for(int i = 0; i < uploadRules.getSize(); i++)
{
final UploadRule ur = (UploadRule)uploadRules.getElementAt(i);
log.trace("doAllUpload() calling upload on " + ur.getUploadSite().getUrl());
if(ur.isValid())
{
org.mbs3.juniuploader.StatusThread.addMessage("Uploading selected file to " + ur.getUploadSite().getUrl());
Util.postFileUpload(ur);
org.mbs3.juniuploader.StatusThread.addMessage("Completed an upload to " + ur.getUploadSite().getUrl());
}
}
org.mbs3.juniuploader.StatusThread.addMessage("All uploads threads completed!");
if(!btn.isEnabled())
btn.setEnabled(true);
}
};
Thread t = new Thread(go);
t.start();
log.trace("doAllUpload() completed");
}
public UploadSite getUploadLocation(String url)
// TODO: Make sure app is aware this can return null
{
log.trace("RemoteSystem: getUploadLocation(String) called for " + url);
for(int i = 0; i < uploadLocations.getSize(); i++)
{
UploadSite ptr = (UploadSite)uploadLocations.getElementAt(i);
log.trace("RemoteSystem: getUploadLocation(String) comparing " + ptr.getUrl());
if(url.equals(ptr.getUrl()))
{
return ptr;
}
}
log.trace("RemoteSystem: getUploadLocation(String) couldn't find " + url);
return null;
}
public UploadSite [] getUploadLocations()
{
UploadSite ret[] = new UploadSite[uploadLocations.getSize()];
for(int i = 0; i<uploadLocations.getSize(); i++)
ret[i] = (UploadSite)uploadLocations.getElementAt(i);
return ret;
}
public static void addUploadLocation(String url)
{
Preferences sites = prefs.node(prefs.absolutePath() + "/sites");
for(int i = 0; i < uploadLocations.getSize(); i++)
{
UploadSite ptr = (UploadSite)uploadLocations.getElementAt(i);
if(url.equals(ptr.getUrl()))
{
return;
}
}
sites.put(url, url);
UploadSite toAdd = new UploadSite(url);
uploadLocations.addElement(toAdd);
}
public static void removeUploadLocation(String url)
// TODO: Make this preferences aware
{
Preferences sites = prefs.node(prefs.absolutePath() + "/sites");
for(int i = 0; i < uploadLocations.getSize(); i++)
{
UploadSite ptr = (UploadSite)uploadLocations.getElementAt(i);
if(url.equals(ptr.getUrl()))
{
uploadLocations.removeElementAt(i); i--;
sites.remove(url);
}
}
}
public static void syncInterface(final JButton btn)
{
log.debug("syncInterface() called");
StatusThread.addMessage("Synchronizing with remote UniAdmin interface");
btn.setEnabled(false);
Runnable go = new Runnable() {
public void run() {
UAInterface.remotePrefstoLocal();
UAInterface.syncImages();
for(int i = 0; i < wowDirectories.getSize(); i++)
{
WDirectory currentWowDir = (WDirectory)wowDirectories.getElementAt(i);
UAInterface.compareAddonsLocalRemote(currentWowDir);
}
btn.setEnabled(true);
}
};
Thread t = new Thread(go);
t.start();
log.debug("syncInterface() completed");
StatusThread.addMessage("Synchronizing with remote UniAdmin interface completed");
}
public static void doUpload(JButton btn)
{
log.info("Begining to upload LUA files to requested locations");
doAllUploads(btn);
log.debug("Returned from doing all uploads");
}
}