/**************************************************************
*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*
*************************************************************/
package installer;
import java.io.*;
import java.util.*;
import java.util.jar.*;
//import org.xml.sax.*;
//import org.w3c.dom.*;
//import javax.xml.parsers.*;
import java.net.URL;
import java.net.JarURLConnection;
//import javax.xml.parsers.*;
import javax.swing.*;
/**
* The XmlUpdater
pulls a META-INF/converter.xml
* file out of a jar file and parses it, providing access to this
* information in a Vector
of ConverterInfo
* objects.
*
* @author Aidan Butler
*/
public class IdeUpdater extends Thread {
private String classesPath = null;
private String jarfilename;
private String installPath;
private JLabel statusLabel;
private Vector listeners;
private Thread internalThread;
private boolean threadSuspended;
private JProgressBar progressBar;
private boolean isNetbeansPath = false;
public IdeUpdater(String installPath, JLabel statusLabel, JProgressBar pBar) {
if (installPath.endsWith(File.separator) == false)
installPath += File.separator;
//File jeditLauncher = new File( installPath + "jedit.jar" );
File netbeansLauncher = new File( installPath + "bin" );
if( netbeansLauncher.isDirectory() ) {
isNetbeansPath = true;
installPath = installPath +"modules" + File.separator;
}
/*
else if( jeditLauncher.isFile() ){
isNetbeansPath = false;
installPath = installPath + "jars" + File.separator;
}
*/
System.out.println( "IdeUpdater installPath is " + installPath + " isNetbeansPath is " + isNetbeansPath );
this.installPath = installPath;
this.statusLabel = statusLabel;
listeners = new Vector();
threadSuspended = false;
progressBar=pBar;
progressBar.setStringPainted(true);
}// XmlUpdater
public boolean checkStop()
{
if (internalThread == Thread.currentThread())
return false;
return true;
}// checkStop
public void checkSuspend()
{
if (threadSuspended)
{
synchronized(this)
{
while (threadSuspended)
{
try {
wait();
} catch (InterruptedException eInt) {
//...
}
}
}
}
}// checkSuspend
public void setSuspend()
{
threadSuspended = true;
}// setSuspend
public void setResume()
{
threadSuspended = false;
notify();
}// setResume
public void setStop()
{
internalThread = null;
}// setStop
public void run() {
//InputStream istream;
//URL url;
//String fileName = null;
internalThread = Thread.currentThread();
progressBar.setString("Unzipping Required Files");
ZipData zd = new ZipData("SFrameworkInstall.jar");
// Adding IDE support
if( isNetbeansPath ) {
if (!zd.extractEntry("ide/office.jar",installPath, statusLabel))
{
onInstallComplete();
return;
}
}
else {
if (!zd.extractEntry("ide/idesupport.jar",installPath, statusLabel))
{
onInstallComplete();
return;
}
if (!zd.extractEntry("ide/OfficeScripting.jar",installPath, statusLabel))
{
onInstallComplete();
return;
}
}
//System.out.println("About to call register");
//Register.register(installPath+File.separator, statusLabel, progressBar);
statusLabel.setText("Installation Complete");
progressBar.setString("Installation Complete");
progressBar.setValue(10);
onInstallComplete();
}// run
public void addInstallListener(InstallListener listener)
{
listeners.addElement(listener);
}// addInstallListener
private void onInstallComplete()
{
Enumeration e = listeners.elements();
while (e.hasMoreElements())
{
InstallListener listener = (InstallListener)e.nextElement();
listener.installationComplete(null);
}
}// onInstallComplete
}// XmlUpdater class