/*
* Copyright 2003-2010 Tufts University Licensed under the
* Educational Community 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.osedu.org/licenses/ECL-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 tufts.vue;
import javax.swing.*;
import java.awt.event.*;
import javax.swing.event.*;
import java.awt.*;
import tufts.vue.gui.*;
import tufts.vue.gui.FocusManager;
public class SakaiCollectionDialog extends SizeRestrictedDialog implements javax.swing.event.TreeSelectionListener
{
private JTree tree = null;
private javax.swing.tree.DefaultTreeModel treeModel = null;
private JScrollPane jsp = null;
private static String TITLE = "Sakai Collections";
private org.osid.shared.Type _collectionAssetType = new edu.tufts.vue.util.Type("sakaiproject.org","asset","siteCollection");
private org.osid.shared.Type _sakaiRepositoryType = new edu.tufts.vue.util.Type("sakaiproject.org","repository","contentHosting");
private edu.tufts.vue.dsm.DataSourceManager _dsm = null;
public SakaiCollectionDialog(edu.tufts.vue.dsm.DataSource dataSources[])
{
super(VUE.getDialogParentAsFrame(),TITLE,true);
try {
//System.out.println("making tree");
javax.swing.tree.DefaultMutableTreeNode root =
new javax.swing.tree.DefaultMutableTreeNode("Sites");
this.treeModel = new javax.swing.tree.DefaultTreeModel(root);
//System.out.println("num ds " + dataSources.length);
for (int i=0; i < dataSources.length; i++) {
org.osid.repository.Repository repository = dataSources[i].getRepository();
//System.out.println("repository is " + repository.getDisplayName());
org.osid.repository.AssetIterator assetIterator = repository.getAssetsByType(_collectionAssetType);
while (assetIterator.hasNextAsset()) {
org.osid.repository.Asset asset = assetIterator.nextAsset();
//System.out.println("asset is " + asset.getDisplayName());
SakaiSiteUserObject userObject = new SakaiSiteUserObject();
userObject.setId(asset.getId().getIdString());
userObject.setDisplayName(asset.getDisplayName());
//System.out.println("another obj " + userObject);
javax.swing.tree.DefaultMutableTreeNode nextTreeNode = new javax.swing.tree.DefaultMutableTreeNode(userObject);
this.treeModel.insertNodeInto(nextTreeNode,root,0);
}
}
this.tree = new JTree(this.treeModel);
this.jsp = new JScrollPane(this.tree);
add(this.jsp);
setSize(200,200);
setVisible(true);
} catch (Throwable t) {
t.printStackTrace();
}
}
private void populate(org.osid.repository.Asset asset,
javax.swing.tree.DefaultMutableTreeNode parent)
{
try {
// recursively descend until only agents remain
if (asset.getAssetType().isEqual(_collectionAssetType)) {
org.osid.repository.AssetIterator assetIterator = asset.getAssetsByType(_collectionAssetType);
while (assetIterator.hasNextAsset()) {
org.osid.repository.Asset a = assetIterator.nextAsset();
//System.out.println("asset is " + asset.getDisplayName());
SakaiSiteUserObject userObject = new SakaiSiteUserObject();
userObject.setId(a.getId().getIdString());
userObject.setDisplayName(a.getDisplayName());
//System.out.println("another obj " + userObject);
javax.swing.tree.DefaultMutableTreeNode nextTreeNode = new javax.swing.tree.DefaultMutableTreeNode(userObject);
this.treeModel.insertNodeInto(nextTreeNode,parent,0);
}
}
} catch (Throwable t) {
t.printStackTrace();
}
}
public void valueChanged(javax.swing.event.TreeSelectionEvent tse)
{
javax.swing.tree.TreePath treePath = tse.getPath();
javax.swing.tree.DefaultMutableTreeNode node =
(javax.swing.tree.DefaultMutableTreeNode)treePath.getLastPathComponent();
SakaiSiteUserObject userObject = (SakaiSiteUserObject)(node.getUserObject());
String idOfSelection = userObject.getId();
System.out.println("Selected " + idOfSelection);
}
private void expandAll()
{
try {
int currentRowCount = 0;
int previousRowCount = -1;
while (previousRowCount != currentRowCount) {
previousRowCount = this.tree.getRowCount();
for (int r = 0; r < previousRowCount; r++) this.tree.expandRow(r);
currentRowCount = this.tree.getRowCount();
}
}
catch (Throwable t) {
t.printStackTrace();
}
}
}