blob: af3f0dbea028073f767bfd60f170da84231ac529 [file] [log] [blame]
/*=============================================================================#
# Copyright (c) 2009, 2019 Stephan Wahlbrink and others.
#
# This program and the accompanying materials are made available under the
# terms of the Eclipse Public License 2.0 which is available at
# https://www.eclipse.org/legal/epl-2.0, or the Apache License, Version 2.0
# which is available at https://www.apache.org/licenses/LICENSE-2.0.
#
# SPDX-License-Identifier: EPL-2.0 OR Apache-2.0
#
# Contributors:
# Stephan Wahlbrink <sw@wahlbrink.eu> - initial API and implementation
#=============================================================================*/
package org.eclipse.statet.nico.ui.actions;
import org.eclipse.ui.IWorkbenchPage;
import org.eclipse.ui.IWorkbenchWindow;
import org.eclipse.statet.jcommons.ts.core.ActiveToolListener;
import org.eclipse.statet.jcommons.ts.core.ActiveToolListener.ActiveToolEvent;
import org.eclipse.statet.jcommons.ts.core.Tool;
import org.eclipse.statet.jcommons.ts.core.ToolProvider;
import org.eclipse.statet.ecommons.ts.ui.workbench.WorkbenchToolRegistryListener;
import org.eclipse.statet.ecommons.ts.ui.workbench.WorkbenchToolSessionData;
import org.eclipse.statet.nico.ui.NicoUI;
@Deprecated
public class WindowToolProvider implements ToolProvider, WorkbenchToolRegistryListener {
private final IWorkbenchPage page;
private ActiveToolListener listener;
public WindowToolProvider(final IWorkbenchWindow window) {
this.page= window.getActivePage();
assert (this.page != null);
}
@Override
public void addToolListener(final ActiveToolListener listener) {
assert (this.listener == null);
this.listener= listener;
NicoUI.getToolRegistry().addListener(this, this.page);
}
@Override
public void removeToolListener(final ActiveToolListener listener) {
assert (this.listener == listener || this.listener == null);
this.listener= null;
NicoUI.getToolRegistry().removeListener(this);
}
@Override
public Tool getTool() {
return NicoUI.getToolRegistry().getActiveToolSession(this.page).getTool();
}
@Override
public void toolSessionActivated(final WorkbenchToolSessionData sessionData) {
this.listener.onToolChanged(
new ActiveToolEvent(ActiveToolEvent.TOOL_ACTIVATED, sessionData.getTool()) );
}
@Override
public void toolTerminated(final WorkbenchToolSessionData sessionData) {
this.listener.onToolChanged(
new ActiveToolEvent(ActiveToolEvent.TOOL_TERMINATED, sessionData.getTool()) );
}
}