/*
* DBeaver - Universal Database Manager
* Copyright (C) 2010-2017 Serge Rider (serge@jkiss.org)
*
* 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 org.jkiss.dbeaver.ui;
import org.eclipse.jface.text.IFindReplaceTarget;
import org.eclipse.jface.text.IFindReplaceTargetExtension;
import org.eclipse.jface.text.IFindReplaceTargetExtension3;
import org.eclipse.jface.text.IRegion;
import org.eclipse.swt.graphics.Color;
import org.eclipse.swt.graphics.Point;
/**
* Composite find/replace target
*/
public class DynamicFindReplaceTarget implements IFindReplaceTarget, IFindReplaceTargetExtension, IFindReplaceTargetExtension3 {
private IFindReplaceTarget target;
public DynamicFindReplaceTarget()
{
}
public IFindReplaceTarget getTarget()
{
return target;
}
public void setTarget(IFindReplaceTarget target)
{
this.target = target;
}
@Override
public boolean canPerformFind()
{
IFindReplaceTarget t = getTarget();
return t != null && t.canPerformFind();
}
@Override
public int findAndSelect(int widgetOffset, String findString, boolean searchForward, boolean caseSensitive, boolean wholeWord)
{
IFindReplaceTarget t = getTarget();
return t == null ? -1 : t.findAndSelect(widgetOffset, findString, searchForward, caseSensitive, wholeWord);
}
@Override
public Point getSelection()
{
IFindReplaceTarget t = getTarget();
return t == null ? new Point(0, 0) : t.getSelection();
}
@Override
public String getSelectionText()
{
IFindReplaceTarget t = getTarget();
return t == null ? "" : t.getSelectionText();
}
@Override
public boolean isEditable()
{
IFindReplaceTarget t = getTarget();
return t != null && t.isEditable();
}
@Override
public void replaceSelection(String text)
{
IFindReplaceTarget t = getTarget();
if (t != null) {
t.replaceSelection(text);
}
}
@Override
public void beginSession()
{
IFindReplaceTarget t = getTarget();
if (t instanceof IFindReplaceTargetExtension) {
((IFindReplaceTargetExtension) t).beginSession();
}
}
@Override
public void endSession()
{
IFindReplaceTarget t = getTarget();
if (t instanceof IFindReplaceTargetExtension) {
((IFindReplaceTargetExtension) t).endSession();
}
}
@Override
public IRegion getScope()
{
IFindReplaceTarget t = getTarget();
if (t instanceof IFindReplaceTargetExtension) {
return ((IFindReplaceTargetExtension) t).getScope();
}
return null;
}
@Override
public void setScope(IRegion scope)
{
IFindReplaceTarget t = getTarget();
if (t instanceof IFindReplaceTargetExtension) {
((IFindReplaceTargetExtension) t).setScope(scope);
}
}
@Override
public Point getLineSelection()
{
IFindReplaceTarget t = getTarget();
if (t instanceof IFindReplaceTargetExtension) {
return ((IFindReplaceTargetExtension) t).getLineSelection();
}
return getSelection();
}
@Override
public void setSelection(int offset, int length)
{
IFindReplaceTarget t = getTarget();
if (t instanceof IFindReplaceTargetExtension) {
((IFindReplaceTargetExtension) t).setSelection(offset, length);
}
}
@Override
public void setScopeHighlightColor(Color color)
{
IFindReplaceTarget t = getTarget();
if (t instanceof IFindReplaceTargetExtension) {
((IFindReplaceTargetExtension) t).setScopeHighlightColor(color);
}
}
@Override
public void setReplaceAllMode(boolean replaceAll)
{
IFindReplaceTarget t = getTarget();
if (t instanceof IFindReplaceTargetExtension) {
((IFindReplaceTargetExtension) t).setReplaceAllMode(replaceAll);
}
}
@Override
public int findAndSelect(int offset, String findString, boolean searchForward, boolean caseSensitive, boolean wholeWord, boolean regExSearch)
{
IFindReplaceTarget t = getTarget();
if (t instanceof IFindReplaceTargetExtension3) {
return ((IFindReplaceTargetExtension3) t).findAndSelect(offset, findString, searchForward, caseSensitive, wholeWord, regExSearch);
}
return findAndSelect(offset, findString, searchForward, caseSensitive, wholeWord);
}
@Override
public void replaceSelection(String text, boolean regExReplace)
{
IFindReplaceTarget t = getTarget();
if (t instanceof IFindReplaceTargetExtension3) {
((IFindReplaceTargetExtension3) t).replaceSelection(text, regExReplace);
}
}
}