Many resources are needed to download a project. Please understand that we have to compensate our server costs. Thank you in advance. Project price only 1 $
You can buy this project and download/modify it how often you want.
/*
* IzPack - Copyright 2001-2008 Julien Ponge, All Rights Reserved.
*
* http://izpack.org/
* http://izpack.codehaus.org/
*
* Copyright 2006 Vladimir Ralev
*
* Licensed 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 com.izforge.izpack.uninstaller;
import com.izforge.izpack.LocaleDatabase;
import com.izforge.izpack.util.AbstractUIHandler;
import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
public class UninstallerConsole
{
/**
* The installation path.
*/
protected String installPath;
/**
* The language pack.
*/
protected static LocaleDatabase langpack;
public UninstallerConsole() throws Exception
{
// Initializations
langpack = new LocaleDatabase(UninstallerFrame.class.getResourceAsStream("/langpack.xml"));
getInstallPath();
}
/**
* Gets the installation path from the log file.
*
* @throws Exception Description of the Exception
*/
private void getInstallPath() throws Exception
{
InputStream in = UninstallerFrame.class.getResourceAsStream("/install.log");
InputStreamReader inReader = new InputStreamReader(in);
BufferedReader reader = new BufferedReader(inReader);
installPath = reader.readLine();
reader.close();
}
/**
* Runs the cmd line uninstaller.
*
* @param destroy Equivallen to the destroy option in the GUI.
*/
public void runUninstall(boolean destroy)
{
Destroyer destroyer = new Destroyer(installPath,
destroy, new DestroyerHandler());
destroyer.start();
}
/**
* The destroyer handler.
*
* This class also implements the InstallListener because the FileExecutor needs it. TODO: get
* rid of the InstallListener - implement generic Listener
*/
private final class DestroyerHandler implements
com.izforge.izpack.util.AbstractUIProgressHandler
{
private int AUTO_ANSWER_MODE = -2;
private void out(String str)
{
System.out.println(str);
}
private boolean askOKCancel(String question, int defaultchoice)
{
if (defaultchoice == AUTO_ANSWER_MODE)
{
return true;
}
boolean defaultanswer = defaultchoice == 1;
try
{
System.out.print(question + " (Ok/Cancel) [" + (defaultanswer ? "O" : "C") + "]:");
String rline = readln();
if (rline.toLowerCase().startsWith("o"))
{
return true;
}
if (rline.toLowerCase().startsWith("c"))
{
return false;
}
}
catch (Exception e)
{
}
if (defaultchoice == -1)
{
return askOKCancel(question, defaultchoice);
}
return defaultanswer;
}
private int askYesNoCancel(String question, int defaultchoice)
{
if (defaultchoice == AUTO_ANSWER_MODE)
{
return AbstractUIHandler.ANSWER_YES;
}
boolean defaultanswer = defaultchoice == 1;
try
{
System.out.print(question + " (Yes/No/Cancel) [" + (defaultanswer ? "Y" : "N") + "]:");
String rline = readln();
if (rline.toLowerCase().equals("y"))
{
return AbstractUIHandler.ANSWER_YES;
}
if (rline.toLowerCase().equals("n"))
{
return AbstractUIHandler.ANSWER_NO;
}
if (rline.toLowerCase().equals("c"))
{
return AbstractUIHandler.ANSWER_CANCEL;
}
}
catch (Exception e)
{
}
if (defaultchoice == -1)
{
return askYesNoCancel(question, defaultchoice);
}
return defaultchoice;
}
private int askYesNo(String question, int defaultchoice)
{
if (defaultchoice == AUTO_ANSWER_MODE)
{
return AbstractUIHandler.ANSWER_YES;
}
boolean defaultanswer = defaultchoice == 1;
try
{
System.out.print(question + " (Yes/No) [" + (defaultanswer ? "Y" : "N") + "]:");
String rline = readln();
if (rline.toLowerCase().equals("y"))
{
return AbstractUIHandler.ANSWER_YES;
}
if (rline.toLowerCase().equals("n"))
{
return AbstractUIHandler.ANSWER_NO;
}
}
catch (Exception e)
{
}
if (defaultchoice == -1)
{
return askYesNoCancel(question, defaultchoice);
}
return defaultchoice;
}
private String read() throws Exception
{
byte[] byteArray = {(byte) System.in.read()};
return new String(byteArray);
}
private String readln() throws Exception
{
String input = read();
int available = System.in.available();
if (available > 0)
{
byte[] byteArray = new byte[available];
System.in.read(byteArray);
input += new String(byteArray);
}
return input.trim();
}
/**
* The destroyer starts.
*
* @param name The name of the overall action. Not used here.
* @param max The maximum value of the progress.
*/
public void startAction(final String name, final int max)
{
out("Processing " + name);
}
/**
* The destroyer stops.
*/
public void stopAction()
{
out(langpack.getString("InstallPanel.finished"));
}
/**
* The destroyer progresses.
*
* @param pos The actual position.
* @param message The message.
*/
public void progress(final int pos, final String message)
{
out(message);
}
public void nextStep(String step_name, int step_no, int no_of_substeps)
{
// not used
}
public void setSubStepNo(int no_of_substeps)
{
// not used
}
/**
* Output a notification.
*
* Does nothing here.
*
* @param text
*/
public void emitNotification(String text)
{
}
/**
* Output a warning.
*
* @param text
*/
public boolean emitWarning(String title, String text)
{
return askOKCancel(title + ": " + text, AUTO_ANSWER_MODE);
}
/**
* The destroyer encountered an error.
*
* @param error The error message.
*/
public void emitError(String title, String error)
{
out(title + ": " + error);
}
/**
* Ask the user a question.
*
* @param title Message title.
* @param question The question.
* @param choices The set of choices to present.
* @return The user's choice.
* @see AbstractUIHandler#askQuestion(String, String, int)
*/
public int askQuestion(String title, String question, int choices)
{
return askQuestion(title, question, choices, AUTO_ANSWER_MODE);
}
/**
* Ask the user a question.
*
* @param title Message title.
* @param question The question.
* @param choices The set of choices to present.
* @param default_choice The default choice. (-1 = no default choice)
* @return The user's choice.
* @see AbstractUIHandler#askQuestion(String, String, int, int)
*/
public int askQuestion(String title, String question, int choices, int default_choice)
{
int choice = 0;
if (choices == AbstractUIHandler.CHOICES_YES_NO)
{
choice = askYesNo(title + ": " + question, default_choice);
}
else if (choices == AbstractUIHandler.CHOICES_YES_NO_CANCEL)
{
choice = askYesNoCancel(title + ": " + question, default_choice);
}
return choice;
}
}
}