blob: f9986315933c8d3c5e6524029ab8c85e89f3c534 [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you 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.apache.uima.caseditor.editor;
import org.eclipse.jface.text.IInformationControl;
import org.eclipse.jface.text.IInformationControlExtension2;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.DisposeListener;
import org.eclipse.swt.events.FocusListener;
import org.eclipse.swt.graphics.Color;
import org.eclipse.swt.graphics.Point;
import org.eclipse.swt.graphics.Rectangle;
import org.eclipse.swt.layout.FillLayout;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;
/**
* TODO: add javadoc here
*/
public class CustomInformationControl implements IInformationControl, IInformationControlExtension2 {
private Shell mShell;
private Control mControl;
private ICustomInformationControlContentHandler mContentHandler;
/**
* Initializes a new instance.
*
* @param parent
* @param contentHandler
*/
public CustomInformationControl(Shell parent,
ICustomInformationControlContentHandler contentHandler) {
mContentHandler = contentHandler;
mShell = new Shell(parent, SWT.NO_FOCUS | SWT.ON_TOP);
mShell.setLayout(new FillLayout());
Display display = mShell.getDisplay();
mShell.setBackground(display.getSystemColor(SWT.COLOR_BLACK));
}
/**
* Sets the viewer control
*
* @param viewerControl
*/
public void setControl(Control viewerControl) {
mControl = viewerControl;
mShell.setSize(viewerControl.getSize());
}
/**
* Retrieves the parent.
*
* @return the parent
*/
public Composite getParent() {
return mShell;
}
public void setInformation(String information) {
// this method is replaced by the extension interface
// method setInput(...)
}
public void setSizeConstraints(int maxWidth, int maxHeight) {
}
public Point computeSizeHint() {
return mShell.computeSize(SWT.DEFAULT, SWT.DEFAULT);
}
public void setVisible(boolean visible) {
mControl.setVisible(visible);
mShell.setVisible(visible);
}
public void setSize(int width, int height) {
// mShell.setSize(width, height);
}
public void setLocation(Point location) {
Rectangle trim = mShell.computeTrim(0, 0, 0, 0);
Point textLocation = mControl.getLocation();
location.x += trim.x - textLocation.x;
location.y += trim.y - textLocation.y;
mShell.setLocation(location);
}
public void dispose() {
if (mShell != null && !mShell.isDisposed()) {
mShell.dispose();
}
}
public void addDisposeListener(DisposeListener listener) {
mShell.addDisposeListener(listener);
}
public void removeDisposeListener(DisposeListener listener) {
mShell.removeDisposeListener(listener);
}
public void setForegroundColor(Color foreground) {
mShell.setForeground(foreground);
}
public void setBackgroundColor(Color background) {
mShell.setBackground(background);
}
public boolean isFocusControl() {
return mShell.isFocusControl();
}
public void setFocus() {
mShell.setFocus();
}
public void addFocusListener(FocusListener listener) {
mShell.addFocusListener(listener);
}
public void removeFocusListener(FocusListener listener) {
mShell.removeFocusListener(listener);
}
public void setInput(Object input) {
mContentHandler.setInput(this, input);
}
/**
* Retrieves the control
*
* @return the control
*/
public Control getControl() {
return mControl;
}
}