Re: [xwiki-devs] [xwiki-notifications] r20663 - in sandbox/gsoc/xoo: . src/main/assembly src/main/java/org/xwiki/xoo src/main/oxt src/main/oxt/META-INF src/main/oxt/dialogLibrary
Author: cristinas Date: 2009-05-31 09:54:20 +0200 (Sun, 31 May 2009) New Revision: 20663
Added: sandbox/gsoc/xoo/src/main/java/org/xwiki/xoo/Debug.java sandbox/gsoc/xoo/src/main/java/org/xwiki/xoo/Settings.java sandbox/gsoc/xoo/src/main/java/org/xwiki/xoo/SettingsDialog.java sandbox/gsoc/xoo/src/main/java/org/xwiki/xoo/Utils.java sandbox/gsoc/xoo/src/main/java/org/xwiki/xoo/XWikiAddIn.java sandbox/gsoc/xoo/src/main/java/org/xwiki/xoo/XWikiDialog.java sandbox/gsoc/xoo/src/main/oxt/dialogLibrary/ sandbox/gsoc/xoo/src/main/oxt/dialogLibrary/Login.xdl sandbox/gsoc/xoo/src/main/oxt/dialogLibrary/Module1.xba sandbox/gsoc/xoo/src/main/oxt/dialogLibrary/dialog.xlb sandbox/gsoc/xoo/src/main/oxt/dialogLibrary/script.xlb Modified: sandbox/gsoc/xoo/pom.xml sandbox/gsoc/xoo/src/main/assembly/dep.xml sandbox/gsoc/xoo/src/main/java/org/xwiki/xoo/IConstants.java sandbox/gsoc/xoo/src/main/java/org/xwiki/xoo/XOO.java sandbox/gsoc/xoo/src/main/oxt/META-INF/manifest.xml Log: connection wizard added
Modified: sandbox/gsoc/xoo/pom.xml =================================================================== --- sandbox/gsoc/xoo/pom.xml 2009-05-31 04:19:18 UTC (rev 20662) +++ sandbox/gsoc/xoo/pom.xml 2009-05-31 07:54:20 UTC (rev 20663) @@ -1,9 +1,8 @@ -<?xml version="1.0" encoding="UTF-8"?> -<project> +<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>org.xwiki.xoo</groupId> <artifactId>xoo</artifactId> - <version>1.0</version> + <version>1.0-SNAPSHOT</version> <description>XWiki OpenOffice.org Integration</description> <build> <plugins> @@ -72,21 +71,27 @@ <dependency> <groupId>org.openoffice</groupId> <artifactId>jurt</artifactId> - <version>2.1.0</version> + <version>3.0.0</version> <scope>compile</scope> </dependency> <dependency> <groupId>org.openoffice</groupId> <artifactId>ridl</artifactId> - <version>2.1.0</version> + <version>3.0.0</version> <scope>compile</scope> </dependency> <dependency> <groupId>org.openoffice</groupId> <artifactId>unoil</artifactId> - <version>2.1.0</version> + <version>3.0.0</version> <scope>compile</scope> </dependency> + <dependency> + <groupId>org.xwiki.platform</groupId> + <artifactId>xwiki-core-xmlrpc-client</artifactId> + <version>1.9-SNAPSHOT</version> + <scope>compile</scope> + </dependency> </dependencies> </project>
Modified: sandbox/gsoc/xoo/src/main/assembly/dep.xml =================================================================== --- sandbox/gsoc/xoo/src/main/assembly/dep.xml 2009-05-31 04:19:18 UTC (rev 20662) +++ sandbox/gsoc/xoo/src/main/assembly/dep.xml 2009-05-31 07:54:20 UTC (rev 20663) @@ -1,9 +1,12 @@ <assembly> - <id>bin</id> <formats> <format>zip</format> </formats> <includeBaseDirectory>false</includeBaseDirectory> + <dependencySets> + <dependencySet> + </dependencySet> + </dependencySets> <fileSets> <fileSet> <directory>src/main/oxt</directory> @@ -20,6 +23,10 @@ <directory>src/main/oxt/META-INF</directory> <outputDirectory>/META-INF</outputDirectory> </fileSet> + <fileSet> + <directory>src/main/oxt/dialogLibrary</directory> + <outputDirectory>/dialogLibrary</outputDirectory> + </fileSet> <fileSet> <directory>target</directory> <outputDirectory></outputDirectory>
Added: sandbox/gsoc/xoo/src/main/java/org/xwiki/xoo/Debug.java =================================================================== --- sandbox/gsoc/xoo/src/main/java/org/xwiki/xoo/Debug.java (rev 0) +++ sandbox/gsoc/xoo/src/main/java/org/xwiki/xoo/Debug.java 2009-05-31 07:54:20 UTC (rev 20663) @@ -0,0 +1,107 @@ +/* + * See the NOTICE file distributed with this work for additional + * information regarding copyright ownership. + * + * This is free software; you can redistribute it and/or modify it + * under the terms of the GNU Lesser General Public License as + * published by the Free Software Foundation; either version 2.1 of + * the License, or (at your option) any later version. + * + * This software is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this software; if not, write to the Free + * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA + * 02110-1301 USA, or see the FSF site: http://www.fsf.org. + */ + +package org.xwiki.xoo; + +import com.sun.star.awt.Rectangle; +import com.sun.star.awt.WindowAttribute; +import com.sun.star.awt.WindowClass; +import com.sun.star.awt.WindowDescriptor; +import com.sun.star.awt.XMessageBox; +import com.sun.star.awt.XToolkit; +import com.sun.star.awt.XWindowPeer; +import com.sun.star.uno.UnoRuntime; +import com.sun.star.frame.XFrame; + +public class Debug { + + private static Debug _instance; + + private XFrame m_xFrame; + private XToolkit m_xToolkit; + + /** + * + */ + private Debug() { + } + + /** + * + * @param m_xFrame + * @param m_xToolkit + */ + public void setContext(XFrame m_xFrame, XToolkit m_xToolkit) { + this.m_xFrame = m_xFrame; + this.m_xToolkit = m_xToolkit; + } + + /** + * + * @return + */ + public static Debug getInstance() { + if (null == _instance) { + _instance = new Debug(); + } + return _instance; + } + + /** + * Shows a dialog used for debugging + * + * @param sTitle + * the title of the dialog + * @param sMessage + * the message to be displayed + */ + public void showMessageBox(String sMessage) { + try { + if (null != m_xFrame && null != m_xToolkit) { + + // describe window properties. + WindowDescriptor aDescriptor = new WindowDescriptor(); + aDescriptor.Type = WindowClass.MODALTOP; + aDescriptor.WindowServiceName = new String("infobox"); + aDescriptor.ParentIndex = -1; + aDescriptor.Parent = (XWindowPeer) UnoRuntime.queryInterface( + XWindowPeer.class, m_xFrame.getContainerWindow()); + aDescriptor.Bounds = new Rectangle(0, 0, 300, 200); + aDescriptor.WindowAttributes = WindowAttribute.BORDER + | WindowAttribute.MOVEABLE | WindowAttribute.CLOSEABLE; + + XWindowPeer xPeer = m_xToolkit.createWindow(aDescriptor); + if (null != xPeer) { + XMessageBox xMsgBox = (XMessageBox) UnoRuntime + .queryInterface(XMessageBox.class, xPeer); + if (null != xMsgBox) { + xMsgBox.setCaptionText("Debug"); + xMsgBox.setMessageText(sMessage); + xMsgBox.execute(); + } + } + } + } catch (com.sun.star.uno.Exception e) { + // TODO error handling + + } + } + +}
Modified: sandbox/gsoc/xoo/src/main/java/org/xwiki/xoo/IConstants.java =================================================================== --- sandbox/gsoc/xoo/src/main/java/org/xwiki/xoo/IConstants.java 2009-05-31 04:19:18 UTC (rev 20662) +++ sandbox/gsoc/xoo/src/main/java/org/xwiki/xoo/IConstants.java 2009-05-31 07:54:20 UTC (rev 20663) @@ -25,8 +25,19 @@ */
public interface IConstants { Why do you need an interface for this? This looks like a .net interface naming convention, but I did not see it in the java world. The XWiki convention is documented here:
Hi, See below, cristinas (SVN) wrote: - http://dev.xwiki.org/xwiki/bin/view/Community/CodeStyle#HClass2FInterfacenam...
- - public final static String PROTOCOL_XOO = "org.xwiki.xoo.xoo:"; - public final static String CMD_LOGIN = "cmdLogin"; - + + final static String PROTOCOL_XOO = "org.xwiki.xoo.xoo:"; + final static String CMD_LOGIN = "cmdLogin"; + final static String SETTINGS_DIALOG = "vnd.sun.star.script:dialogLibrary.Login?location=application"; + + final static int TYPE_INFO = 0; + final static int TYPE_ERROR = 1; + + final static String TITLE_ERROR = "XWiki Error"; + final static String TITLE_XWIKI = "XWiki"; + + final static int ERROR_LOGINFAILED = 0; + final static String[] errorMessages = { "Login failed! Please check the server URL, the username and password " }; + final static int MESS_LOGINSUCC = 0; + final static String[] Messages = { "Login succeed!" }; }
Added: sandbox/gsoc/xoo/src/main/java/org/xwiki/xoo/Settings.java =================================================================== --- sandbox/gsoc/xoo/src/main/java/org/xwiki/xoo/Settings.java (rev 0) +++ sandbox/gsoc/xoo/src/main/java/org/xwiki/xoo/Settings.java 2009-05-31 07:54:20 UTC (rev 20663) @@ -0,0 +1,63 @@ +/* + * See the NOTICE file distributed with this work for additional + * information regarding copyright ownership. + * + * This is free software; you can redistribute it and/or modify it + * under the terms of the GNU Lesser General Public License as + * published by the Free Software Foundation; either version 2.1 of + * the License, or (at your option) any later version. + * + * This software is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this software; if not, write to the Free + * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA + * 02110-1301 USA, or see the FSF site: http://www.fsf.org. + */ + +package org.xwiki.xoo; + +public class Settings {
I this a generic settings class or will it store just authentication settings?
+ + private String serverURL; + private String username; + private String password; + + public Settings(String serverURL, String username, String password) { + this.serverURL = serverURL; + this.username = username; + this.password = password; + } + + public String getServerURL() { + return serverURL; + } + + public void setServerURL(String serverURL) { + this.serverURL = serverURL; + } + + public String getUsername() { + return username; + } + + public void setUsername(String username) { + this.username = username; + } + + public String getPassword() { + return password; + } + + public void setPassword(String password) { + this.password = password; + } + + public String toString() { + return serverURL + " " + username + " " + password; + } + +}
Added: sandbox/gsoc/xoo/src/main/java/org/xwiki/xoo/SettingsDialog.java =================================================================== --- sandbox/gsoc/xoo/src/main/java/org/xwiki/xoo/SettingsDialog.java (rev 0) +++ sandbox/gsoc/xoo/src/main/java/org/xwiki/xoo/SettingsDialog.java 2009-05-31 07:54:20 UTC (rev 20663) @@ -0,0 +1,106 @@ +/* + * See the NOTICE file distributed with this work for additional + * information regarding copyright ownership. + * + * This is free software; you can redistribute it and/or modify it + * under the terms of the GNU Lesser General Public License as + * published by the Free Software Foundation; either version 2.1 of + * the License, or (at your option) any later version. + * + * This software is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this software; if not, write to the Free + * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA + * 02110-1301 USA, or see the FSF site: http://www.fsf.org. + */ + +package org.xwiki.xoo; + +import org.xwiki.xmlrpc.XWikiXmlRpcClient; + +import com.sun.star.awt.XDialog; +import com.sun.star.beans.UnknownPropertyException; +import com.sun.star.lang.WrappedTargetException; +import com.sun.star.uno.XComponentContext; + +public class SettingsDialog extends XWikiDialog { + + private final String sOKMethod = "btnOK_Clicked"; + private final String sCancelMethod = "btnCancel_Clicked"; + + /** + * + * @param c + */ + public SettingsDialog(XComponentContext c) { + super(c, IConstants.SETTINGS_DIALOG); + } + + /** + * + */ + public boolean callHandlerMethod(XDialog xDialog, Object EventObject, + String MethodName) { + + if (MethodName.equals(sOKMethod)) { + btnOK_Clicked(); + } + if (MethodName.equals(sCancelMethod)) { + btnCancel_Clicked(); + } + return true; + } + + /** + * + */ + public void btnOK_Clicked() { + + boolean bResult = false; + + try { + String sURL = (String) GetPropSet("txtServerURL").getPropertyValue( + "Text"); + String sUserName = (String) GetPropSet("txtUsername") + .getPropertyValue("Text"); + String sPassword = (String) GetPropSet("txtPassword") + .getPropertyValue("Text"); + Settings set = new Settings(sURL, sUserName, sPassword); + + XWikiAddIn xWikiAddIn = XWikiAddIn.getInstance(); + xWikiAddIn.setSettings(set); + XWikiXmlRpcClient client = xWikiAddIn.getClient(); + if (client != null) { + bResult = xWikiAddIn.doLogin(); + } + if (bResult) { + m_xDialog.endExecute(); + Utils.ShowMessage(m_xContext, m_xDialog, + IConstants.TITLE_XWIKI, IConstants.MESS_LOGINSUCC, + IConstants.TYPE_INFO, false); + } else { + Utils.ShowMessage(m_xContext, m_xDialog, + IConstants.TITLE_ERROR, IConstants.ERROR_LOGINFAILED, + IConstants.TYPE_ERROR, false); + } + } catch (UnknownPropertyException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } catch (WrappedTargetException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + + } + + /** + * + */ + public void btnCancel_Clicked() { + m_xDialog.endExecute(); + }
You have missing javadoc on every method in this class. Why are the mouse clicked methods public?
+} \ No newline at end of file
Added: sandbox/gsoc/xoo/src/main/java/org/xwiki/xoo/Utils.java =================================================================== --- sandbox/gsoc/xoo/src/main/java/org/xwiki/xoo/Utils.java (rev 0) +++ sandbox/gsoc/xoo/src/main/java/org/xwiki/xoo/Utils.java 2009-05-31 07:54:20 UTC (rev 20663) @@ -0,0 +1,169 @@ +/* + * See the NOTICE file distributed with this work for additional + * information regarding copyright ownership. + * + * This is free software; you can redistribute it and/or modify it + * under the terms of the GNU Lesser General Public License as + * published by the Free Software Foundation; either version 2.1 of + * the License, or (at your option) any later version. + * + * This software is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this software; if not, write to the Free + * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA + * 02110-1301 USA, or see the FSF site: http://www.fsf.org. + */ + +package org.xwiki.xoo; + +import com.sun.star.awt.MessageBoxButtons; +import com.sun.star.awt.XControl; +import com.sun.star.awt.XDialog; +import com.sun.star.awt.XMessageBox; +import com.sun.star.awt.XMessageBoxFactory; +import com.sun.star.awt.XWindowPeer; +import com.sun.star.lang.XComponent; +import com.sun.star.lang.XMultiComponentFactory; +import com.sun.star.uno.UnoRuntime; +import com.sun.star.uno.XComponentContext; + +public class Utils { + + /** + * + * @param nMessID + * @param nTypeID + * @return + */ + private static String getText(int nMessID, int nTypeID) { + String sMessage = null; + + switch (nTypeID) { + case IConstants.TYPE_ERROR: + sMessage = (IConstants.errorMessages.length > nMessID) ? IConstants.errorMessages[nMessID] + : "Error: " + nMessID; + break; + case IConstants.TYPE_INFO: + sMessage = (IConstants.Messages.length > nMessID) ? IConstants.Messages[nMessID] + : "Error: " + nMessID; + break; + } + return sMessage; + } + + /** + * + * @param xContext + * @param xDialog + * @param sTitle + * @param nMessID + * @param nTypeID + * @param bQuery + */ + protected static void ShowMessage(XComponentContext xContext, + XDialog xDialog, String sTitle, int nMessID, int nTypeID, + boolean bQuery) { + XWindowPeer xPeer = null; + XControl xControl = (XControl) UnoRuntime.queryInterface( + XControl.class, xDialog); + if (xControl != null) + xPeer = xControl.getPeer(); + ShowMessage(xContext, xPeer, sTitle, nMessID, nTypeID, bQuery); + } + + /** + * + * @param xContext + * @param xParentPeer + * @param sTitle + * @param nMessID + * @param nTypeID + * @param bQuery + * @return + */ + protected static boolean ShowMessage(XComponentContext xContext, + XWindowPeer xParentPeer, String sTitle, int nMessID, int nTypeID, + boolean bQuery) { + boolean bResult = false; + + if (xContext != null) { + String sMessage = getText(nMessID, nTypeID); + + if (xParentPeer != null) { + XMessageBoxFactory xMBFactory = null; + XMessageBox xMB = null; + try { + XMultiComponentFactory xFactory = xContext + .getServiceManager(); + if (xFactory != null) + xMBFactory = (XMessageBoxFactory) UnoRuntime + .queryInterface(XMessageBoxFactory.class, + xFactory.createInstanceWithContext( + "com.sun.star.awt.Toolkit", + xContext)); + + if (xMBFactory != null) { + if (bQuery) { + xMB = xMBFactory + .createMessageBox( + xParentPeer, + new com.sun.star.awt.Rectangle(), + "querybox", + MessageBoxButtons.BUTTONS_YES_NO + | MessageBoxButtons.DEFAULT_BUTTON_NO, + sTitle, sMessage); + } else if (nTypeID == IConstants.TYPE_INFO) { + xMB = xMBFactory.createMessageBox(xParentPeer, + new com.sun.star.awt.Rectangle(), + "infobox", + MessageBoxButtons.BUTTONS_YES_NO, sTitle, + sMessage); + } + + else { + xMB = xMBFactory.createMessageBox(xParentPeer, + new com.sun.star.awt.Rectangle(), + "errorbox", MessageBoxButtons.BUTTONS_OK, + sTitle, sMessage); + } + if (xMB != null) { + xMB.execute(); + bResult = true; + } + } + } catch (Exception e) { + e.printStackTrace(); + // TODO error Handling + + } finally { + if (xMB != null) + Dispose(xMB); + } + } + } + + return bResult; + } + + /** + * + * @param oObject + */ + public static void Dispose(Object oObject) { + if (oObject != null) { + try { + XComponent xComp = (XComponent) UnoRuntime.queryInterface( + XComponent.class, oObject); + if (xComp != null) + xComp.dispose(); + } catch (Exception e) { + e.printStackTrace(); + } + } + } + +}
Modified: sandbox/gsoc/xoo/src/main/java/org/xwiki/xoo/XOO.java =================================================================== --- sandbox/gsoc/xoo/src/main/java/org/xwiki/xoo/XOO.java 2009-05-31 04:19:18 UTC (rev 20662) +++ sandbox/gsoc/xoo/src/main/java/org/xwiki/xoo/XOO.java 2009-05-31 07:54:20 UTC (rev 20663) @@ -25,14 +25,7 @@ import com.sun.star.lang.XSingleComponentFactory; import com.sun.star.registry.XRegistryKey; import com.sun.star.lib.uno.helper.WeakBase; - import com.sun.star.awt.XToolkit; -import com.sun.star.awt.XWindowPeer; -import com.sun.star.awt.XMessageBox; -import com.sun.star.awt.WindowAttribute; -import com.sun.star.awt.WindowClass; -import com.sun.star.awt.WindowDescriptor; -import com.sun.star.awt.Rectangle;
/** * @@ -163,6 +156,8 @@ m_xFrame = (com.sun.star.frame.XFrame) UnoRuntime.queryInterface(com.sun.star.frame.XFrame.class, object[0]); } + Debug debug = Debug.getInstance(); + debug.setContext(m_xFrame, m_xToolkit); }
/** @@ -175,7 +170,9 @@ { if (aURL.Protocol.compareTo(IConstants.PROTOCOL_XOO) == 0) { if (aURL.Path.compareTo(IConstants.CMD_LOGIN) == 0) { - showMessageBox("Test", "Test"); + //showMessageBox("Test", "Test"); + SettingsDialog set = new SettingsDialog(m_xContext); + set.show(); return; } } @@ -203,41 +200,4 @@ // TODO add code }
- /** - * Shows a dialog used for debugging - * @param sTitle the title of the dialog - * @param sMessage the message to be displayed - */ - public void showMessageBox(String sTitle, String sMessage) - { - try { - if (null != m_xFrame && null != m_xToolkit) { - - // describe window properties. - WindowDescriptor aDescriptor = new WindowDescriptor(); - aDescriptor.Type = WindowClass.MODALTOP; - aDescriptor.WindowServiceName = new String("infobox"); - aDescriptor.ParentIndex = -1; - aDescriptor.Parent = - (XWindowPeer) UnoRuntime.queryInterface(XWindowPeer.class, m_xFrame.getContainerWindow()); - aDescriptor.Bounds = new Rectangle(0, 0, 300, 200); - aDescriptor.WindowAttributes = - WindowAttribute.BORDER | WindowAttribute.MOVEABLE | WindowAttribute.CLOSEABLE; - - XWindowPeer xPeer = m_xToolkit.createWindow(aDescriptor); - if (null != xPeer) { - XMessageBox xMsgBox = (XMessageBox) UnoRuntime.queryInterface(XMessageBox.class, xPeer); - if (null != xMsgBox) { - xMsgBox.setCaptionText(sTitle); - xMsgBox.setMessageText(sMessage); - xMsgBox.execute(); - } - } - } - } catch (com.sun.star.uno.Exception e) { - // TODO error handling - - } - } - }
Added: sandbox/gsoc/xoo/src/main/java/org/xwiki/xoo/XWikiAddIn.java =================================================================== --- sandbox/gsoc/xoo/src/main/java/org/xwiki/xoo/XWikiAddIn.java (rev 0) +++ sandbox/gsoc/xoo/src/main/java/org/xwiki/xoo/XWikiAddIn.java 2009-05-31 07:54:20 UTC (rev 20663) @@ -0,0 +1,93 @@ +/* + * See the NOTICE file distributed with this work for additional + * information regarding copyright ownership. + * + * This is free software; you can redistribute it and/or modify it + * under the terms of the GNU Lesser General Public License as + * published by the Free Software Foundation; either version 2.1 of + * the License, or (at your option) any later version. + * + * This software is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this software; if not, write to the Free + * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA + * 02110-1301 USA, or see the FSF site: http://www.fsf.org. + */ + +package org.xwiki.xoo; + +import java.net.MalformedURLException; + +import org.apache.xmlrpc.XmlRpcException; +import org.xwiki.xmlrpc.XWikiXmlRpcClient; + +public class XWikiAddIn {
Can you explain a bit what is the role of this class? I hope this doesn't become a massive singleton that will be used everywhere across the sources. You are using the add-in and add-on terms in your sources. We should respect the OOo naming and call it 'extension'.
+ + static private XWikiAddIn _instance = null; + + private XWikiXmlRpcClient client = null; + private Settings settings; + + /** + * + */ + private XWikiAddIn() { + } + + /** + * + * @return + */ + public static synchronized XWikiAddIn getInstance() { + if (null == _instance) { + _instance = new XWikiAddIn(); + } + return _instance; + } + + /** + * + * @return + */ + public XWikiXmlRpcClient getClient() { + return client; + } + + /** + * + * @param set + */ + public void setSettings(Settings set) { + this.settings = set; + try { + client = new XWikiXmlRpcClient(set.getServerURL()); + } catch (MalformedURLException e) { + } + } + + /** + * + * @return + */ + public Settings getSettings() { + return settings; + } + + /** + * + * @return + */ + public boolean doLogin() { + boolean bResult = true; + try { + client.login(settings.getUsername(), settings.getPassword()); + } catch (XmlRpcException e) { + bResult = false; + } + return bResult; + } +}
Added: sandbox/gsoc/xoo/src/main/java/org/xwiki/xoo/XWikiDialog.java =================================================================== --- sandbox/gsoc/xoo/src/main/java/org/xwiki/xoo/XWikiDialog.java (rev 0) +++ sandbox/gsoc/xoo/src/main/java/org/xwiki/xoo/XWikiDialog.java 2009-05-31 07:54:20 UTC (rev 20663) @@ -0,0 +1,158 @@ +/* + * See the NOTICE file distributed with this work for additional + * information regarding copyright ownership. + * + * This is free software; you can redistribute it and/or modify it + * under the terms of the GNU Lesser General Public License as + * published by the Free Software Foundation; either version 2.1 of + * the License, or (at your option) any later version. + * + * This software is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this software; if not, write to the Free + * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA + * 02110-1301 USA, or see the FSF site: http://www.fsf.org. + */ + +package org.xwiki.xoo; + +import com.sun.star.awt.XControl; +import com.sun.star.awt.XControlContainer; +import com.sun.star.awt.XControlModel; +import com.sun.star.awt.XDialog; +import com.sun.star.awt.XDialogEventHandler; +import com.sun.star.awt.XDialogProvider2; +import com.sun.star.beans.XPropertySet; +import com.sun.star.lang.XMultiComponentFactory; +import com.sun.star.uno.UnoRuntime; +import com.sun.star.uno.XComponentContext; +import com.sun.star.awt.XTopWindow; +import com.sun.star.awt.XTopWindowListener; +import com.sun.star.awt.XWindow; +import com.sun.star.container.XNameContainer; +import com.sun.star.lang.EventObject; +import com.sun.star.lang.XMultiServiceFactory; + +public class XWikiDialog implements XDialogEventHandler, XTopWindowListener { + + XComponentContext m_xContext; + XControlContainer m_xControlContainer; + XDialog m_xDialog; + String[] m_aMethods; + boolean m_bAction = false; + + protected Thread m_aThread; + protected boolean m_bThreadFinished = false; + + /** Creates a new instance of XWikiDialog */ + public XWikiDialog(XComponentContext c, String DialogURL) { + this.m_xContext = c; + XMultiComponentFactory xMCF = m_xContext.getServiceManager(); + try { + Object obj; + obj = xMCF.createInstanceWithContext( + "com.sun.star.awt.DialogProvider2", m_xContext); + XDialogProvider2 xDialogProvider = (XDialogProvider2) UnoRuntime + .queryInterface(XDialogProvider2.class, obj); + + m_xDialog = xDialogProvider + .createDialogWithHandler(DialogURL, this); + m_xControlContainer = (XControlContainer) UnoRuntime + .queryInterface(XControlContainer.class, m_xDialog); + XTopWindow xTopWindow = (XTopWindow) UnoRuntime.queryInterface( + XTopWindow.class, m_xDialog); + if (xTopWindow != null) + xTopWindow.addTopWindowListener(this); + } catch (com.sun.star.uno.Exception ex) { + ex.printStackTrace(); + } + } + + /** + * Shows the Dialog. + */ + public void show() { + if (m_xDialog != null) + m_xDialog.execute(); + } + + /** + * + * @param sControl The control for + * @return + */ + protected XPropertySet GetPropSet(String sControl) { + return GetPropSet(m_xControlContainer, sControl); + } + + protected static XPropertySet GetPropSet( + XControlContainer xControlContainer, String sControl) { + XPropertySet xPS = null; + + if (xControlContainer != null && sControl != null) { + XControl xControl = xControlContainer.getControl(sControl); + xPS = (XPropertySet) UnoRuntime.queryInterface(XPropertySet.class, + xControl.getModel()); + } + + if (xPS == null) + throw new com.sun.star.uno.RuntimeException(); + + return xPS; + } + + public void DisposeDialog() { + } + + public void SetFocusTo(String aControl) { + if (m_xControlContainer != null) { + try { + XWindow xWindow = (XWindow) UnoRuntime + .queryInterface(XWindow.class, m_xControlContainer + .getControl(aControl)); + if (xWindow != null) + xWindow.setFocus(); + } catch (Exception e) { + e.printStackTrace(); + } + } + } + + public boolean callHandlerMethod(XDialog arg0, Object arg1, String arg2) { + return true; + } + + public String[] getSupportedMethodNames() { + // TODO Auto-generated method stub + return null; + } + + public void windowActivated(EventObject arg0) { + } + + public void windowClosed(EventObject arg0) { + } + + public void windowClosing(EventObject arg0) { + } + + public void windowDeactivated(EventObject arg0) { + } + + public void windowMinimized(EventObject arg0) { + } + + public void windowNormalized(EventObject arg0) { + } + + public void windowOpened(EventObject arg0) { + } + + public void disposing(EventObject arg0) { + } + +}
Modified: sandbox/gsoc/xoo/src/main/oxt/META-INF/manifest.xml =================================================================== --- sandbox/gsoc/xoo/src/main/oxt/META-INF/manifest.xml 2009-05-31 04:19:18 UTC (rev 20662) +++ sandbox/gsoc/xoo/src/main/oxt/META-INF/manifest.xml 2009-05-31 07:54:20 UTC (rev 20663) @@ -4,6 +4,8 @@ manifest:full-path="xoo-1.0.jar"/> <manifest:file-entry manifest:media-type="application/vnd.sun.star.configuration-data" manifest:full-path="registry/data/org/openoffice/Office/ProtocolHandler.xcu"/> + <manifest:file-entry manifest:full-path="dialogLibrary/" + manifest:media-type="application/vnd.sun.star.basic-library"/> <manifest:file-entry manifest:media-type="application/vnd.sun.star.configuration-data" manifest:full-path="registry/data/org/openoffice/Office/Addons.xcu"/> </manifest:manifest>
Added: sandbox/gsoc/xoo/src/main/oxt/dialogLibrary/Login.xdl =================================================================== --- sandbox/gsoc/xoo/src/main/oxt/dialogLibrary/Login.xdl (rev 0) +++ sandbox/gsoc/xoo/src/main/oxt/dialogLibrary/Login.xdl 2009-05-31 07:54:20 UTC (rev 20663) @@ -0,0 +1,27 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE dlg:window PUBLIC "-//OpenOffice.org//DTD OfficeDocument 1.0//EN" "dialog.dtd"> +<dlg:window xmlns:dlg="http://openoffice.org/2000/dialog" xmlns:script="http://openoffice.org/2000/script" dlg:id="Login" dlg:left="101" dlg:top="52" dlg:width="143" dlg:height="108" dlg:closeable="true" dlg:moveable="true" dlg:title="Connection Settings"> + <dlg:bulletinboard> + <dlg:button dlg:id="btnOK" dlg:tab-index="0" dlg:left="26" dlg:top="86" dlg:width="37" dlg:height="16" dlg:value="OK"> + <script:event script:event-name="on-performaction" script:macro-name="vnd.sun.star.UNO:btnOK_Clicked" script:language="UNO"/> + </dlg:button> + <dlg:button dlg:id="btnCancel" dlg:tab-index="2" dlg:left="102" dlg:top="86" dlg:width="37" dlg:height="16" dlg:value="Cancel"> + <script:event script:event-name="on-performaction" script:macro-name="vnd.sun.star.UNO:btnCancel_Clicked" script:language="UNO"/> + </dlg:button> + <dlg:text dlg:id="lblURL" dlg:tab-index="3" dlg:left="5" dlg:top="25" dlg:width="34" dlg:height="10" dlg:value="Server URL"/> + <dlg:text dlg:id="lblUser" dlg:tab-index="4" dlg:left="5" dlg:top="43" dlg:width="34" dlg:height="10" dlg:value="Username"/> + <dlg:text dlg:id="lblPass" dlg:tab-index="8" dlg:left="5" dlg:top="61" dlg:width="34" dlg:height="10" dlg:value="Password"/> + <dlg:titledbox dlg:id="FrameControl2" dlg:tab-index="9" dlg:left="-1" dlg:top="29" dlg:width="1" dlg:height="6"> + <dlg:title dlg:value="FrameControl2"/> + </dlg:titledbox> + <dlg:titledbox dlg:id="frmSettings" dlg:tab-index="10" dlg:left="3" dlg:top="5" dlg:width="137" dlg:height="75"> + <dlg:title dlg:value="Server settings"/> + </dlg:titledbox> + <dlg:textfield dlg:id="txtServerURL" dlg:tab-index="5" dlg:left="54" dlg:top="25" dlg:width="82" dlg:height="10" dlg:value="http://localhost:8080"/> + <dlg:textfield dlg:id="txtUsername" dlg:tab-index="6" dlg:left="54" dlg:top="43" dlg:width="82" dlg:height="10"/> + <dlg:button dlg:id="btnApply" dlg:tab-index="1" dlg:left="64" dlg:top="86" dlg:width="37" dlg:height="16" dlg:value="Apply"> + <script:event script:event-name="on-itemstatechange" script:macro-name="vnd.sun.star.UNO:btnCancel_Clicked" script:language="UNO"/> + </dlg:button> + <dlg:textfield dlg:id="txtPassword" dlg:tab-index="7" dlg:left="54" dlg:top="61" dlg:width="82" dlg:height="10" dlg:echochar="*"/> + </dlg:bulletinboard> +</dlg:window> \ No newline at end of file
Added: sandbox/gsoc/xoo/src/main/oxt/dialogLibrary/Module1.xba =================================================================== --- sandbox/gsoc/xoo/src/main/oxt/dialogLibrary/Module1.xba (rev 0) +++ sandbox/gsoc/xoo/src/main/oxt/dialogLibrary/Module1.xba 2009-05-31 07:54:20 UTC (rev 20663) @@ -0,0 +1,14 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE script:module PUBLIC "-//OpenOffice.org//DTD OfficeDocument 1.0//EN" "module.dtd"> +<script:module xmlns:script="http://openoffice.org/2000/script" script:name="Module1" script:language="StarBasic">REM ***** BASIC ***** + +Sub Main + + + + oDialog = createUnoDialog(DialogLibraries.dialogLibrary.Login) + oDialog.execute + + +End Sub +</script:module> \ No newline at end of file
Added: sandbox/gsoc/xoo/src/main/oxt/dialogLibrary/dialog.xlb =================================================================== --- sandbox/gsoc/xoo/src/main/oxt/dialogLibrary/dialog.xlb (rev 0) +++ sandbox/gsoc/xoo/src/main/oxt/dialogLibrary/dialog.xlb 2009-05-31 07:54:20 UTC (rev 20663) @@ -0,0 +1,5 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE library:library PUBLIC "-//OpenOffice.org//DTD OfficeDocument 1.0//EN" "library.dtd"> +<library:library xmlns:library="http://openoffice.org/2000/library" library:name="dialogLibrary" library:readonly="false" library:passwordprotected="false"> + <library:element library:name="Login"/> +</library:library> \ No newline at end of file
Added: sandbox/gsoc/xoo/src/main/oxt/dialogLibrary/script.xlb =================================================================== --- sandbox/gsoc/xoo/src/main/oxt/dialogLibrary/script.xlb (rev 0) +++ sandbox/gsoc/xoo/src/main/oxt/dialogLibrary/script.xlb 2009-05-31 07:54:20 UTC (rev 20663) @@ -0,0 +1,5 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE library:library PUBLIC "-//OpenOffice.org//DTD OfficeDocument 1.0//EN" "library.dtd"> +<library:library xmlns:library="http://openoffice.org/2000/library" library:name="dialogLibrary" library:readonly="false" library:passwordprotected="false"> + <library:element library:name="Module1"/> +</library:library> \ No newline at end of file
_______________________________________________ notifications mailing list [email protected] http://lists.xwiki.org/mailman/listinfo/notifications
Hi! Thank you very much for your code review. public interface IConstants {
Why do you need an interface for this? This looks like a .net interface naming convention, but I did not see it in the java world. The XWiki convention is documented here: -
http://dev.xwiki.org/xwiki/bin/view/Community/CodeStyle#HClass2FInterfacenam...
I thought this kind of interface might be useful, because I will have a lot of constants ( the URL of every dialog box etc). Another reason for using this kind of interface is the localization. If you don't like it, I can remove it. Settings.java
I this a generic settings class or will it store just authentication settings?
I would like to store here all the settings, established by the user.I can make it more generic, using a dictionary structure which will have the keys the name of the properties and the value = the value itself. XwikiAddIn.java
Can you explain a bit what is the role of this class? I hope this doesn't become a massive singleton that will be used everywhere across the sources.
Yes, it is a singleton which stores the XMLRPC client and XWikiStructure. I promise that it won't become massive, but I think this two objects will be used in many classes and I would like to avoid sending them as parameters. I will add the proper documentation and change some class names. I've wrote also a post about what I've done to be more clear : http://gsoc.myxwiki.org/xwiki/bin/view/XWiki+Integration+With+Open+Office/Cr... Now I work on the navigation panel. I have a problem .. it is not clear for me how can I integrate the panel in the OpenOffice environment in order to look as a component of it (like the custom control from the XWord). Is anybody who knows? (I will ask today alsa the OOo API deveopers). Let me know if there are any other changes that I should do at the written classes. Best regards, Cristina
Cristina Scheau wrote:
Hi!
Thank you very much for your code review.
public interface IConstants {
Why do you need an interface for this? This looks like a .net interface naming convention, but I did not see it in the java world. The XWiki convention is documented here: -
http://dev.xwiki.org/xwiki/bin/view/Community/CodeStyle#HClass2FInterfacenam...
I thought this kind of interface might be useful, because I will have a lot of constants ( the URL of every dialog box etc). Another reason for using this kind of interface is the localization. If you don't like it, I can remove it.
Settings.java
I this a generic settings class or will it store just authentication settings?
I would like to store here all the settings, established by the user.I can make it more generic, using a dictionary structure which will have the keys the name of the properties and the value = the value itself.
Actually I think it should be less generic, meaning that IMO authentication data should not be stored/retrieved with the other settings.
XwikiAddIn.java
Can you explain a bit what is the role of this class? I hope this doesn't become a massive singleton that will be used everywhere across the sources.
Yes, it is a singleton which stores the XMLRPC client and XWikiStructure. I promise that it won't become massive, but I think this two objects will be used in many classes and I would like to avoid sending them as parameters.
I will add the proper documentation and change some class names. I've wrote also a post about what I've done to be more clear : http://gsoc.myxwiki.org/xwiki/bin/view/XWiki+Integration+With+Open+Office/Cr...
Now I work on the navigation panel. I have a problem .. it is not clear for me how can I integrate the panel in the OpenOffice environment in order to look as a component of it (like the custom control from the XWord). Is anybody who knows? (I will ask today alsa the OOo API deveopers).
I digged a bit into this. OOo seems to have some mechanism for handling [task] panes(panels) but they are only available in Impress and Draw that use the drawing module. - http://wiki.services.openoffice.org/wiki/Drawing_framework - http://api.openoffice.org/docs/common/ref/com/sun/star/drawing/framework/XPa... - http://api.openoffice.org/docs/common/ref/com/sun/star/drawing/framework/XPa... - http://api.openoffice.org/docs/common/ref/com/sun/star/drawing/framework/XPa... I don't know if this is available in Writer or if it allows you to create your own custom panes. You should ask more on the OOo lists.
Let me know if there are any other changes that I should do at the written classes.
Best regards, Cristina _______________________________________________ devs mailing list [email protected] http://lists.xwiki.org/mailman/listinfo/devs
participants (2)
-
Cristina Scheau -
Florin Ciubotaru