/*=============================================================================#
# Copyright (c) 2009-2016 Stephan Wahlbrink (WalWare.de) and others.
# All rights reserved. This program and the accompanying materials
# are 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:
# Stephan Wahlbrink - initial API and implementation
#=============================================================================*/
package de.walware.statet.nico.ui.actions;
import org.eclipse.ui.IWorkbenchPage;
import org.eclipse.ui.IWorkbenchWindow;
import de.walware.statet.nico.core.runtime.ToolProcess;
import de.walware.statet.nico.core.util.IToolProvider;
import de.walware.statet.nico.core.util.IToolRetargetable;
import de.walware.statet.nico.ui.IToolRegistryListener;
import de.walware.statet.nico.ui.NicoUI;
import de.walware.statet.nico.ui.ToolSessionUIData;
public class WindowToolProvider implements IToolProvider, IToolRegistryListener {
private final IWorkbenchPage fPage;
private IToolRetargetable fListener;
public WindowToolProvider(final IWorkbenchWindow window) {
fPage = window.getActivePage();
assert (fPage != null);
}
@Override
public void addToolRetargetable(final IToolRetargetable listener) {
assert (fListener == null);
fListener = listener;
NicoUI.getToolRegistry().addListener(this, fPage);
}
@Override
public void removeToolRetargetable(final IToolRetargetable listener) {
assert (fListener == listener || fListener == null);
fListener = null;
NicoUI.getToolRegistry().removeListener(this);
}
@Override
public ToolProcess getTool() {
return NicoUI.getToolRegistry().getActiveToolSession(fPage).getProcess();
}
@Override
public void toolSessionActivated(final ToolSessionUIData informations) {
fListener.setTool(informations.getProcess());
}
@Override
public void toolTerminated(final ToolSessionUIData sessionData) {
fListener.toolTerminated();
}
}