/*******************************************************************************
* Copyright 2017 Capital One Services, LLC and Bitwise, Inc.
* 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 hydrograph.ui.project.structure.console;
import hydrograph.ui.common.interfaces.console.IHydrographConsole;
import hydrograph.ui.common.interfaces.parametergrid.DefaultGEFCanvas;
import org.eclipse.ui.IWorkbenchPart;
import org.eclipse.ui.PlatformUI;
import org.eclipse.ui.console.ConsolePlugin;
import org.eclipse.ui.console.IConsole;
import org.eclipse.ui.console.IConsoleManager;
import org.eclipse.ui.console.MessageConsole;
import org.eclipse.ui.internal.console.ConsoleView;
/**
*
* Hydrograph's custom console view
*
* @author Bitwise
*
*/
public class HydrographConsole extends ConsoleView implements IHydrographConsole {
private boolean consoleClosed;
private static String DEFAULT_CONSOLE = "NewConsole";
@Override
public void partActivated(IWorkbenchPart part) {
super.partActivated(part);
consoleClosed = true;
}
@Override
public void partDeactivated(IWorkbenchPart part) {
super.partDeactivated(part);
consoleClosed = false;
}
@Override
protected void partVisible(IWorkbenchPart part) {
super.partVisible(part);
consoleClosed = false;
}
@Override
public void partClosed(IWorkbenchPart part) {
super.partClosed(part);
consoleClosed = true;
}
@Override
public boolean isConsoleClosed() {
return consoleClosed;
}
private DefaultGEFCanvas getComponentCanvas() {
if (PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().getActiveEditor() instanceof DefaultGEFCanvas)
return (DefaultGEFCanvas) PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage()
.getActiveEditor();
else
return null;
}
private IConsole getConsole(String consoleName, IConsoleManager conMan) {
IConsole[] existing = conMan.getConsoles();
MessageConsole messageConsole = null;
for (int i = 0; i < existing.length; i++) {
if (existing[i].getName().equals(consoleName)) {
messageConsole = (MessageConsole) existing[i];
return messageConsole;
}
}
return null;
}
@Override
public void partOpened(IWorkbenchPart part) {
super.partOpened(part);
if (getComponentCanvas() != null) {
ConsolePlugin plugin = ConsolePlugin.getDefault();
IConsoleManager conMan = plugin.getConsoleManager();
String consoleName = getComponentCanvas().getActiveProject() + "." + getComponentCanvas().getJobName();
IConsole consoleToShow = getConsole(consoleName, conMan);
if (consoleToShow != null) {
// Fix for : Console window is getting displayed if user maximize canvas window and then try to create new job (Ctrl+J)
// conMan.showConsoleView(consoleToShow);
} else {
addDummyConsole();
}
}
}
private void addDummyConsole() {
ConsolePlugin plugin = ConsolePlugin.getDefault();
IConsoleManager conMan = plugin.getConsoleManager();
IConsole consoleToShow = getConsole(DEFAULT_CONSOLE, conMan);
if (consoleToShow == null) {
consoleToShow = createNewMessageConsole(DEFAULT_CONSOLE, conMan);
}
// Fix for : Console window is getting displayed if user maximize canvas window and then try to create new job (Ctrl+J)
// conMan.showConsoleView(consoleToShow);
}
private MessageConsole createNewMessageConsole(String consoleName, IConsoleManager conMan) {
MessageConsole messageConsole;
messageConsole = new MessageConsole(consoleName, null);
conMan.addConsoles(new IConsole[] { messageConsole });
return messageConsole;
}
}