[Solved] Java: how to set data in a TreeControl?

Creating a macro - Writing a Script - Using the API (OpenOffice Basic, Python, BeanShell, JavaScript)
Post Reply
milek_pl
Posts: 8
Joined: Sat Jun 28, 2008 12:29 pm

[Solved] Java: how to set data in a TreeControl?

Post by milek_pl »

Hi all,

I'm trying to set data for a TreeControl in a saved dialog. I have absolutely no idea how to link XTreeControl and the tree data. I see no methods for doing this, so probably there is something obvious I'm overlooking. This is the code I have:

Code: Select all

     Object xTreeData = xMCF.createInstanceWithContext(
           "com.sun.star.awt.tree.MutableTreeDataModel", xContext);
     XMutableTreeDataModel mxTreeDataModel = (XMutableTreeDataModel) 
       UnoRuntime.queryInterface(XMutableTreeDataModel.class, xTreeData); 
     XMutableTreeNode xNode = mxTreeDataModel.createNode("test1", false);
     xNode.setDataValue("test2");
     xNode.setExpandedGraphicURL(sPackageURL + "triangle_down.png");
     xNode.setCollapsedGraphicURL(sPackageURL + "triangle_right.png");
     mxTreeDataModel.setRoot(xNode);
     XTreeControl mxTreeControl = (XTreeControl) 
     UnoRuntime.queryInterface(XTreeControl.class, xDlgContainer.getControl("Rules"));
     Object xTreeConM = xMCF.createInstanceWithContext(
         "com.sun.star.awt.tree.TreeControlModel", xContext);
     XControlModel xTreeControlModel = (XControlModel)
       UnoRuntime.queryInterface(XControlModel.class, xTreeConM);
     XPropertySet xTreeControlModelSet = (XPropertySet) UnoRuntime.queryInterface(XPropertySet.class, xTreeControlModel);
     xTreeControlModelSet.setPropertyValue("DataModel", mxTreeDataModel);
So I created data for the TreeDataModel etc., but there is no setting method for XTreeControl that I got from the dialog. My code throws no null exception so it seems to work fine but of course nothing displays. Any idea what I'm doing wrong?
Last edited by milek_pl on Mon Jun 30, 2008 7:00 pm, edited 1 time in total.
OOo 3.0.X on Ms Windows XP + Linux Suse 10.2
hanya
Volunteer
Posts: 885
Joined: Fri Nov 23, 2007 9:27 am
Location: Japan

Re: Java: how to set data in a TreeControl?

Post by hanya »

Hi,

You don't need to make a new control model and get it from the control taken by the getControl method if it is created by the dialog editor.

Code: Select all

		// get the XControlModel of the tree control
		XControl xControlTree = xDlgContainer.getControl("Rules");
		XControlModel xTreeModel = xControlTree.getModel();

		Object xTreeData = xMCF.createInstanceWithContext(
          		 "com.sun.star.awt.tree.MutableTreeDataModel", xContext);
		XMutableTreeDataModel mxTreeDataModel = (XMutableTreeDataModel) UnoRuntime.queryInterface(
				XMutableTreeDataModel.class, xTreeData);

		XMutableTreeNode xNode = xDataModel.createNode("Root", false);

		xDataModel.setRoot(xNode);

		XPropertySet xTreeModelProperty = (XPropertySet) UnoRuntime.queryInterface(
				XPropertySet.class, xTreeModel);
		xTreeModelProperty.setPropertyValue("DataModel", xDataModel);
Please, edit this thread's initial post and add "[Solved]" to the subject line if your problem has been solved.
Apache OpenOffice 4-dev on Xubuntu 14.04
milek_pl
Posts: 8
Joined: Sat Jun 28, 2008 12:29 pm

Re: Java: how to set data in a TreeControl?

Post by milek_pl »

Thanks! This made it work. I tried using XTreeControl but it has no getModel() method...

Regards
Marcin
OOo 3.0.X on Ms Windows XP + Linux Suse 10.2
Post Reply