/*
* 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.
*/
/**
* @author Pavel Dolgov
* @version $Revision$
*/
package org.apache.harmony.awt;
//???AWT
//import java.awt.Component;
//import java.awt.Container;
//import java.awt.Dialog;
import java.awt.Dimension;
//import java.awt.Image;
import java.awt.Insets;
import java.awt.Point;
import java.awt.Rectangle;
//import java.awt.Window;
//import java.awt.Choice;
import java.lang.reflect.InvocationTargetException;
import org.apache.harmony.awt.gl.MultiRectArea;
//import org.apache.harmony.awt.text.TextFieldKit;
//import org.apache.harmony.awt.text.TextKit;
//import org.apache.harmony.awt.wtk.NativeWindow;
import org.apache.harmony.luni.util.NotImplementedException;
/**
* The accessor to AWT private API
*/
public abstract class ComponentInternals {
/**
* @return the ComponentInternals instance to serve the requests
*/
public static ComponentInternals getComponentInternals() {
return ContextStorage.getComponentInternals();
}
/**
* This method must be called by AWT to establish the connection
* @param internals - implementation of ComponentInternals created by AWT
*/
public static void setComponentInternals(ComponentInternals internals) {
ContextStorage.setComponentInternals(internals);
}
/**
* The accessor to native resource connected to a component.
* It returns non-null
value only if component
* already has the native resource
*/
//public abstract NativeWindow getNativeWindow(Component component);
/**
* Connect Window object to existing native resource
* @param nativeWindowId - id of native window to attach
* @return Window object with special behaviour that
* restricts manupulation with that window
*/
//public abstract Window attachNativeWindow(long nativeWindowId);
/**
* Start mouse grab in "client" mode.
* All mouse events in AWT components will be reported as usual,
* mouse events that occured outside of AWT components will be sent to
* the window passed as grabWindow parameter. When mouse grab is canceled
* (because of click in non-AWT window or by task switching)
* the whenCanceled callback is called
*
* @param grabWindow - window that will own the grab
* @param whenCanceled - callback called when grab is canceled by user's action
*/
//public abstract void startMouseGrab(Window grabWindow, Runnable whenCanceled);
/**
* End mouse grab and resume normal processing of mouse events
*/
//public abstract void endMouseGrab();
/**
* Set the popup
flag of the window to true.
* This window won't be controlled by window manager on Linux.
* Call this method before the window is shown first time
* @param window - the window that should become popup one
*/
//public abstract void makePopup(Window window);
/**
* This method must be called by Graphics at the beginning of drawImage()
* to store image drawing parameters (defined by application developer) in component
*
* @param comp - component that draws the image
* @param image - image to be drawn
* @param destLocation - location of the image upon the component's surface. Never null.
* @param destSize - size of the component's area to be filled with the image.
* Equals to null if size parameters omitted in drawImage.
* @param source - area of the image to be drawn on the component.
* Equals to null if src parameters omitted in drawImage.
*/
/*
public abstract void onDrawImage(Component comp, Image image, Point destLocation,
Dimension destSize, Rectangle source);
*/
/**
* Sets system's caret position.
* This method should be called by text component to synchronize our caret position
* with system's caret position.
* @param x
* @param y
*/
//public abstract void setCaretPos(Component c, int x, int y);
/**
* NEVER USE IT. FORGET IT. IT DOES NOT EXIST.
* See Toolkit.unsafeInvokeAndWait(Runnable).
*
* Accessor for Toolkit.unsafeInvokeAndWait(Runnable) method.
* For use in exceptional cases only.
* Read comments for Toolkit.unsafeInvokeAndWait(Runnable) before use.
*/
/*
public abstract void unsafeInvokeAndWait(Runnable runnable)
throws InterruptedException, InvocationTargetException;
public abstract TextKit getTextKit(Component comp);
public abstract void setTextKit(Component comp, TextKit kit);
public abstract TextFieldKit getTextFieldKit(Component comp);
public abstract void setTextFieldKit(Component comp, TextFieldKit kit);
*/
/**
* Terminate event dispatch thread, completely destroy AWT context.
* Intended for multi-context mode, in single-context mode does nothing.
*
*/
public abstract void shutdown();
/**
* Sets mouse events preprocessor for event queue
*/
//public abstract void setMouseEventPreprocessor(MouseEventPreprocessor preprocessor);
/**
* Create customized Choice using style
*/
//public abstract Choice createCustomChoice(ChoiceStyle style);
//public abstract Insets getNativeInsets(Window w);
/**
* Region to be repainted (could be null). Use this in overridden repaint()
*/
//public abstract MultiRectArea getRepaintRegion(Component c);
//public abstract MultiRectArea subtractPendingRepaintRegion(Component c, MultiRectArea mra);
/**
* Returns true if the window was at least once painted due to native paint events
*/
//public abstract boolean wasPainted(Window w);
/**
* The component's region hidden behind top-level windows
* (belonging to both this Java app and all other apps), and behind
* heavyweight components overlapping with passed component
*/
//public abstract MultiRectArea getObscuredRegion(Component c);
/**
* An accessor to Container.addObscuredRegions() method
* @see java.awt.Container#addObscuredRegions(MultiRectArea, Component)
*/
//public abstract void addObscuredRegions(MultiRectArea mra, Component c, Container container);
/**
* Makes it possible to call protected Toolkit.setDesktopProperty()
* method from any class outside of java.awt package
*/
public abstract void setDesktopProperty(String name, Object value);
/**
* Makes it possible to start/stop dialog modal loop
* from anywhere outside of java.awt package
*/
//public abstract void runModalLoop(Dialog dlg);
//public abstract void endModalLoop(Dialog dlg);
/**
* Sets component's visible flag only
* (the component is not actually shown/hidden)
*/
//public abstract void setVisibleFlag(Component comp, boolean visible);
}