/*******************************************************************************
* Copyright (c) 2007 Business Objects Software Limited and others.
* All rights reserved.
* This file is made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* Business Objects Software Limited - initial API and implementation
*******************************************************************************/
/*
* CALConsoleFactory.java
* Creation date: Jul 24, 2007.
* By: Edward Lam
*/
package org.openquark.cal.eclipse.ui.console;
import java.util.Arrays;
import org.eclipse.ui.console.ConsolePlugin;
import org.eclipse.ui.console.IConsole;
import org.eclipse.ui.console.IConsoleFactory;
import org.eclipse.ui.console.IConsoleListener;
import org.eclipse.ui.console.IConsoleManager;
/**
* Creates a CAL new console.
*
* @author Edward Lam
*/
public class CALConsoleFactory implements IConsoleFactory {
/** The console created by this factory if any. */
private CALConsole openConsole = null;
/**
* Constructor for a CALConsoleFactory.
* Called via extension point.
*/
public CALConsoleFactory() {
ConsolePlugin.getDefault().getConsoleManager().addConsoleListener(new IConsoleListener() {
/**
* {@inheritDoc}
*/
public void consolesAdded(IConsole[] consoles) {
}
/**
* {@inheritDoc}
*/
public void consolesRemoved(IConsole[] consoles) {
if (Arrays.asList(consoles).contains(openConsole)) {
openConsole = null;
}
}
});
}
/**
* {@inheritDoc}
*/
public void openConsole() {
IConsoleManager consoleManager = ConsolePlugin.getDefault().getConsoleManager();
if (openConsole == null) {
openConsole = new CALConsole();
openConsole.initializeDocument();
consoleManager.addConsoles(new IConsole[] {openConsole});
}
consoleManager.showConsoleView(openConsole);
}
/**
* @return the CALConsole instance which has been returned by this factory if any, or null if none.
*/
public CALConsole getConsole() {
return openConsole;
}
}