Do you have any error log?
https://wiki.openoffice.org/wiki/Uno/Spec/Log_Environment
On Mon, Mar 16, 2015 at 9:41 AM, Engin GMAIL <o.enginoz@gmail.com> wrote:
> Hi;
>
> I'm trying to write sidebar extension for openoffice. I've read sidebar
> for developers from wiki. (https://wiki.openoffice.org/
> wiki/Sidebar_for_Developers)
> And i modify like below, but i can not add button control. How can i add
> control to XSidebarPanel ?
>
> package org.apache.openoffice.sidebar;
>
> import java.util.Vector;
>
> import com.sun.star.accessibility.XAccessible;
> import com.sun.star.awt.Rectangle;
> import com.sun.star.awt.Size;
> import com.sun.star.awt.WindowAttribute;
> import com.sun.star.awt.WindowClass;
> import com.sun.star.awt.WindowDescriptor;
> import com.sun.star.awt.WindowEvent;
> import com.sun.star.awt.XToolkit;
> import com.sun.star.awt.XWindow;
> import com.sun.star.awt.XWindowListener;
> import com.sun.star.awt.XWindowPeer;
> import com.sun.star.beans.XPropertySet;
> import com.sun.star.container.XNameContainer;
> import com.sun.star.lang.DisposedException;
> import com.sun.star.lang.EventObject;
> import com.sun.star.lang.XComponent;
> import com.sun.star.lang.XEventListener;
> import com.sun.star.lang.XMultiComponentFactory;
> import com.sun.star.lang.XMultiServiceFactory;
> import com.sun.star.ui.LayoutSize;
> import com.sun.star.ui.XSidebarPanel;
> import com.sun.star.ui.XToolPanel;
> import com.sun.star.uno.Exception;
> import com.sun.star.uno.UnoRuntime;
> import com.sun.star.uno.XComponentContext;
>
> public abstract class PanelBase implements XToolPanel, XWindowListener,
> XSidebarPanel, XComponent {
> /**
> * This is the one method that a derived class has to implement: how to
> * react to size changes of the content window.
> */
> abstract protected void Layout(final Size aWindowSize);
>
> protected PanelBase() {
> maDisposeListeners = new Vector<XEventListener>();
> }
>
> protected void Initialize(final XWindow xParentWindow,
> final XComponentContext xContext) {
> Log.Instance().println("creating panel");
>
> // Create the content window of the panel.
> try {
> XWindowPeer xParentPeer =
> (XWindowPeer) UnoRuntime.queryInterface(XWindowPeer.class,
> xParentWindow);
> if (xParentPeer != null) {
> xParentWindow.addWindowListener(this);
>
> if (xContext == null)
> throw new RuntimeException("got null XContext");
> XMultiComponentFactory xFactory =
> xContext.getServiceManager();
> if (xFactory == null)
> throw new RuntimeException(
> "can not acquire factor from XContext");
>
> XToolkit xToolkit =
> (XToolkit) UnoRuntime.queryInterface(XToolkit.class,
> xFactory.createInstanceWithContext(
> "com.sun.star.awt.Toolkit", xContext));
> WindowDescriptor aWindowDescriptor =
> new WindowDescriptor(WindowClass.CONTAINER, "",
> xParentPeer, (short) -1, // parent index not
> available
> new Rectangle(0, 0, 10, 10),
> WindowAttribute.SIZEABLE
> | WindowAttribute.MOVEABLE
> | WindowAttribute.NODECORATION);
> mxWindow =
> (XWindow) UnoRuntime.queryInterface(XWindow.class,
> xToolkit.createWindow(aWindowDescriptor));
> if (mxWindow == null)
> throw new RuntimeException(
> "can not create XWindow for parent " +
> xParentPeer);
>
> // Make the background transparent. The slide show paints
> its
> // own background.
> final XWindowPeer xPeer =
> (XWindowPeer) UnoRuntime.queryInterface(
> XWindowPeer.class,
> mxWindow);
> if (xPeer != null) {
> // Make the window background transparent to avoid some
> // flickering,
> // when first the window background and then the canvas
> // content is painted.
> // xPeer.setBackground(0xffffff);
> xPeer.setBackground(0xfff000);
> }
>
> XMultiServiceFactory xMultiServiceFactory =
> (XMultiServiceFactory) xContext.getServiceManager();
>
> try {
> String _buttonName = "mahooo";
> // create the button model and set the properties
> Object buttonModel =
> xMultiServiceFactory
> .createInstance("com.sun.star.awt.UnoControlButtonModel");
> XPropertySet xPSetButton =
> (XPropertySet) UnoRuntime.queryInterface(
> XPropertySet.class, buttonModel);
> xPSetButton.setPropertyValue("PositionX", new
> Integer(20));
> xPSetButton.setPropertyValue("PositionY", new
> Integer(70));
> xPSetButton.setPropertyValue("Width", new
> Integer(50));
> xPSetButton.setPropertyValue("Height", new
> Integer(14));
> xPSetButton.setPropertyValue("Name", _buttonName);
> xPSetButton.setPropertyValue("TabIndex", new Short(
> (short) 0));
> xPSetButton.setPropertyValue("Label",
> new String("Click Me"));
>
> XNameContainer xNameCont =
> (XNameContainer) UnoRuntime.queryInterface(
> XNameContainer.class, xPeer);
> xNameCont.insertByName(_buttonName, buttonModel);
> } catch (Exception e) {
> // TODO Auto-generated catch block
> e.printStackTrace();
> }
>
> mxWindow.setVisible(true);
> }
> } catch (Exception aException) {
> Log.Instance().PrintStackTrace(aException);
> throw new RuntimeException("can not create window for Panel: "
> + aException.getMessage());
> }
> }
>
> // ----- Implementation of UNO interface XWindowListener -----
>
> @Override
> public void windowHidden(final EventObject aEvent) {
> CallLayout(0, 0);
> }
>
> @Override
> public void windowMoved(final WindowEvent aEvent) {
> CallLayout(aEvent.Width, aEvent.Height);
> }
>
> @Override
> public void windowResized(final WindowEvent aEvent) {
> CallLayout(aEvent.Width, aEvent.Height);
> }
>
> @Override
> public void windowShown(final EventObject aEvent) {
> CallLayout(mxWindow.getPosSize().Width,
> mxWindow.getPosSize().Height);
> }
>
> @Override
> public void disposing(final EventObject aEvent) {
> mxWindow = null;
> }
>
> // ----- Implementation of UNO interface XToolPanel -----
>
> @Override
> public XAccessible createAccessible(XAccessible arg0) {
> return (XAccessible) UnoRuntime.queryInterface(XAccessible.class,
> getWindow());
> }
>
> @Override
> public XWindow getWindow() {
> if (mxWindow == null)
> throw new DisposedException("Panel is already disposed", this);
>
> return mxWindow;
> }
>
> // ----- Implementation of UNO interface XSidebarPanel -----
>
> @Override
> public LayoutSize getHeightForWidth(final int nWidth) {
> return new LayoutSize(0, 0, 0);
> }
>
> // ----- Implementation of UNO interface XComponent -----
>
> @Override
> public void dispose() {
> EventObject aEvent = new EventObject(this);
> for (final XEventListener xListener : maDisposeListeners)
> xListener.disposing(aEvent);
> }
>
> @Override
> public void addEventListener(final XEventListener xListener) {
> maDisposeListeners.add(xListener);
> }
>
> @Override
> public void removeEventListener(final XEventListener xListener) {
> maDisposeListeners.remove(xListener);
> }
>
> // ----- private methods -----
>
> private void CallLayout(final int nWidth, final int nHeight) {
> Layout(new Size(nWidth, nHeight));
> }
>
> protected XWindow mxWindow;
> private final Vector<XEventListener> maDisposeListeners;
> }
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: api-unsubscribe@openoffice.apache.org
> For additional commands, e-mail: api-help@openoffice.apache.org
>
>
--
Alexandro Colorado
Apache OpenOffice Contributor
882C 4389 3C27 E8DF 41B9 5C4C 1DB7 9D1C 7F4C 2614
|