Author: solomax
Date: Wed Aug 10 05:34:01 2016
New Revision: 1755671
URL: http://svn.apache.org/viewvc?rev=1755671&view=rev
Log:
[OPENMEETINGS-1030] file tree now works better (no visual glitches)
Added:
openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/OmTreeProvider.java
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/OmTreeProvider.java
Removed:
openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/MyRecordingTreeProvider.java
openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/PublicRecordingTreeProvider.java
openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/RecordingTreeProvider.java
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/MyRecordingTreeProvider.java
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/PublicRecordingTreeProvider.java
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/RecordingTreeProvider.java
Modified:
openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/AddFolderDialog.java
openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FileItemTree.java
openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FileTreePanel.html
openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FileTreePanel.java
openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FolderPanel.java
openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/RoomFilePanel.java
openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/UploadDialog.java
openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/record/RecordingsPanel.java
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/AddFolderDialog.java
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FileItemTree.java
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FileTreePanel.html
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FileTreePanel.java
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FolderPanel.java
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/RoomFilePanel.java
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/UploadDialog.java
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/record/RecordingsPanel.java
Modified:
openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/AddFolderDialog.java
URL:
http://svn.apache.org/viewvc/openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/AddFolderDialog.java?rev=1755671&r1=1755670&r2=1755671&view=diff
==============================================================================
---
openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/AddFolderDialog.java
(original)
+++
openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/AddFolderDialog.java
Wed Aug 10 05:34:01 2016
@@ -70,13 +70,13 @@ public abstract class AddFolderDialog ex
});
}
};
- add(form);
+ add(form.setOutputMarkupId(true));
}
@Override
protected void onOpen(IPartialPageRequestHandler handler) {
super.onOpen(handler);
-
+ handler.add(form);
setModelObject(name);
getFeedbackMessages().clear();
}
Modified:
openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FileItemTree.java
URL:
http://svn.apache.org/viewvc/openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FileItemTree.java?rev=1755671&r1=1755670&r2=1755671&view=diff
==============================================================================
---
openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FileItemTree.java
(original)
+++
openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FileItemTree.java
Wed Aug 10 05:34:01 2016
@@ -34,31 +34,32 @@ import org.apache.wicket.markup.repeater
import org.apache.wicket.model.IModel;
import org.apache.wicket.model.Model;
-public class FileItemTree<T extends FileItem> extends DefaultNestedTree<T> {
+public class FileItemTree extends DefaultNestedTree<FileItem> {
private static final long serialVersionUID = 1L;
private final FileTreePanel treePanel;
- private final IModel<T> selectedItem = Model.of((T)null);
- public FileItemTree(String id, FileTreePanel treePanel,
ITreeProvider<T> tp) {
+ public FileItemTree(String id, FileTreePanel treePanel,
ITreeProvider<FileItem> tp) {
super(id, tp);
this.treePanel = treePanel;
setItemReuseStrategy(new ReuseIfModelsEqualStrategy());
}
@Override
- protected Component newContentComponent(String id, IModel<T> node) {
- return new Folder<T>(id, this, node) {
+ protected Component newContentComponent(String id, IModel<FileItem>
node) {
+ return new Folder<FileItem>(id, this, node) {
private static final long serialVersionUID = 1L;
@Override
- protected Component newLabelComponent(String id, final
IModel<T> lm) {
+ protected Component newLabelComponent(String id, final
IModel<FileItem> lm) {
FileItem r = lm.getObject();
- return Type.Folder == r.getType() || r.getId()
< 1 ? new FolderPanel(id, lm, treePanel) : new FileItemPanel(id, lm, treePanel);
+ return Type.Folder == r.getType() || r.getId()
== null ? new FolderPanel(id, lm, treePanel) : new FileItemPanel(id, lm,
treePanel);
}
@Override
protected boolean isSelected() {
- return
getModelObject().getId().equals(treePanel.selectedFile.getObject().getId());
+ FileItem f = getModelObject(), s =
treePanel.getSelected();
+ return (s.getId() == null && s.getId() ==
f.getId() && s.getHash().equals(f.getHash()))
+ || (s.getId() != null &&
s.getId().equals(f.getId()));
}
@Override
@@ -68,28 +69,21 @@ public class FileItemTree<T extends File
@Override
protected void onClick(AjaxRequestTarget target) {
- T r = getModelObject();
- treePanel.selected.resetSelected(target);
- selectedItem.setObject(r);
- treePanel.selectedFile.setObject(r);
- treePanel.selected = FileItemTree.this;
+ FileItem r = getModelObject();
+ treePanel.setSelected(r, target);
if (Type.Folder == r.getType()) {
if (getState(r) == State.COLLAPSED) {
super.onClick(target);
}
- updateBranch(r, target);
} else {
treePanel.update(target, r);
- updateNode(r, target);
}
}
- private String getItemStyle(T f, String def) {
+ private String getItemStyle(FileItem f, String def) {
String style;
- if (f.getId() == 0) {
- style = "my file om-icon";
- } else if (f.getId() < 0) {
- style = "public file om-icon";
+ if (f.getId() == null) {
+ style = f.getHash().indexOf("my") > -1
? "my file om-icon" : "public file om-icon";
} else {
switch(f.getType()) {
case Folder:
@@ -129,7 +123,7 @@ public class FileItemTree<T extends File
}
@Override
- protected String getOtherStyleClass(T r) {
+ protected String getOtherStyleClass(FileItem r) {
return getItemStyle(r,
super.getOtherStyleClass(r));
}
@@ -149,27 +143,9 @@ public class FileItemTree<T extends File
}
@Override
- protected IModel<String> newLabelModel(IModel<T> model)
{
+ protected IModel<String> newLabelModel(IModel<FileItem>
model) {
return Model.of(model.getObject().getName());
}
};
}
-
- private void resetSelected(AjaxRequestTarget target) {
- T _prev = selectedItem.getObject();
- if (_prev != null) {
- if (Type.Folder == _prev.getType()) {
- updateBranch(_prev, target);
- } else {
- updateNode(_prev, target);
- }
- selectedItem.setObject(null);
- }
- }
-
- @Override
- protected void onDetach() {
- selectedItem.detach();
- super.onDetach();
- }
}
Modified:
openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FileTreePanel.html
URL:
http://svn.apache.org/viewvc/openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FileTreePanel.html?rev=1755671&r1=1755670&r2=1755671&view=diff
==============================================================================
---
openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FileTreePanel.html
(original)
+++
openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FileTreePanel.html
Wed Aug 10 05:34:01 2016
@@ -37,9 +37,7 @@
</div>
<div wicket:id="tree-container" class="trees">
<div id="tree-anchor" style="height: 2px; width:
2px;"></div>
- <div wicket:id="tree">
- <div wicket:id="item"></div>
- </div>
+ <div wicket:id="tree"></div>
</div>
<div class="sizes" wicket:id="sizes">
<table>
Modified:
openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FileTreePanel.java
URL:
http://svn.apache.org/viewvc/openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FileTreePanel.java?rev=1755671&r1=1755670&r2=1755671&view=diff
==============================================================================
---
openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FileTreePanel.java
(original)
+++
openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FileTreePanel.java
Wed Aug 10 05:34:01 2016
@@ -21,7 +21,6 @@ package org.apache.openmeetings.web.comm
import static org.apache.openmeetings.web.app.Application.getBean;
import static org.apache.openmeetings.web.app.WebSession.getUserId;
-import java.util.ArrayList;
import java.util.Date;
import java.util.UUID;
@@ -39,12 +38,9 @@ import org.apache.wicket.ajax.AjaxEventB
import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.ajax.attributes.CallbackParameter;
import org.apache.wicket.core.request.handler.IPartialPageRequestHandler;
-import org.apache.wicket.extensions.markup.html.repeater.tree.ITreeProvider;
import org.apache.wicket.markup.html.WebMarkupContainer;
import org.apache.wicket.markup.html.basic.Label;
import org.apache.wicket.markup.html.form.Form;
-import org.apache.wicket.markup.html.list.ListItem;
-import org.apache.wicket.markup.html.list.ListView;
import org.apache.wicket.markup.html.panel.Panel;
import org.apache.wicket.model.CompoundPropertyModel;
import org.apache.wicket.model.IModel;
@@ -61,41 +57,28 @@ public abstract class FileTreePanel exte
private static final long serialVersionUID = 1L;
final WebMarkupContainer trees = new
WebMarkupContainer("tree-container");
private final WebMarkupContainer sizes = new
WebMarkupContainer("sizes");
- protected final IModel<FileItem> selectedFile = new
CompoundPropertyModel<FileItem>((FileItem)null);
+ private final IModel<FileItem> selected = new
CompoundPropertyModel<FileItem>((FileItem)null);
protected final IModel<String> homeSize = Model.of((String)null);
protected final IModel<String> publicSize = Model.of((String)null);
final ConvertingErrorsDialog errorsDialog = new
ConvertingErrorsDialog("errors", Model.of((Recording)null));
- protected FileItemTree<? extends FileItem> selected;
- protected ListView<ITreeProvider<? extends FileItem>> treesView = new
ListView<ITreeProvider<? extends FileItem>>("tree", new
ArrayList<ITreeProvider<? extends FileItem>>()) {
- private static final long serialVersionUID = 1L;
-
- @Override
- protected void populateItem(ListItem<ITreeProvider<? extends
FileItem>> item) {
- @SuppressWarnings({ "unchecked", "rawtypes" }) //TODO
investigate this
- FileItemTree<? extends FileItem> fit = new
FileItemTree("item", FileTreePanel.this, item.getModelObject());
- if (selected == null) {
- selected = fit;
- }
- item.add(fit);
- }
- };
+ final FileItemTree tree;
- public FileTreePanel(String id) {
+ public FileTreePanel(String id, Long roomId) {
super(id);
+ OmTreeProvider tp = new OmTreeProvider(roomId);
+ setSelected(tp.getRoot(), null);
+ add(tree = new FileItemTree("tree", this, tp));
}
@Override
protected void onInitialize() {
super.onInitialize();
- defineTrees();
- selectedFile.getObject().setId(Long.MIN_VALUE);
final AddFolderDialog addFolder = new
AddFolderDialog("addFolder", Application.getString(712)) {
private static final long serialVersionUID = 1L;
@Override
protected void onSubmit(AjaxRequestTarget target) {
- createFolder(getModelObject());
- target.add(trees); //FIXME add correct refresh
+ createFolder(target, getModelObject());
}
};
add(addFolder);
@@ -163,7 +146,7 @@ public abstract class FileTreePanel exte
@Override
protected void onEvent(AjaxRequestTarget target) {
- target.add(trees); //FIXME add correct refresh
+ target.add(trees);
}
}));
trashToolbar.add(new ConfirmableAjaxBorder("trash",
getString("80"), getString("713")) {
@@ -171,7 +154,7 @@ public abstract class FileTreePanel exte
@Override
protected void onEvent(AjaxRequestTarget target) {
- FileItem f = selectedFile.getObject();
+ FileItem f = selected.getObject();
if (f != null && f.getId() > 0) {
super.onEvent(target);
}
@@ -179,11 +162,11 @@ public abstract class FileTreePanel exte
@Override
protected void onSubmit(AjaxRequestTarget target,
Form<?> form) {
- delete(selectedFile.getObject(), target);
+ delete(selected.getObject(), target);
}
});
- add(trees.add(treesView).setOutputMarkupId(true));
+ add(trees.add(tree).setOutputMarkupId(true));
updateSizes();
add(sizes.add(new Label("homeSize", homeSize), new
Label("publicSize", publicSize)).setOutputMarkupId(true));
add(errorsDialog);
@@ -206,40 +189,61 @@ public abstract class FileTreePanel exte
getBean(FileExplorerItemDao.class).delete((FileExplorerItem)f);
}
}
- handler.add(trees); //FIXME add correct refresh
+ handler.add(trees);
}
- public void createRecordingFolder(String name) {
- Recording f = new Recording();
+ protected abstract void update(AjaxRequestTarget target, FileItem f);
+
+ protected void createFolder(AjaxRequestTarget target, String name) {
+ FileItem p = selected.getObject();
+ boolean isRecording = p instanceof Recording;
+ if (Type.Folder != p.getType()) {
+
+ }
+ FileItem f = isRecording ? new Recording() : new
FileExplorerItem();
f.setName(name);
f.setInsertedBy(getUserId());
f.setInserted(new Date());
- f.setType(Type.Folder);;
- Recording p = (Recording)selectedFile.getObject();
- long parentId = p.getId();
- if (Type.Folder == p.getType()) {
- f.setParentId(parentId);
- }
+ f.setType(Type.Folder);
f.setOwnerId(p.getOwnerId());
- f.setGroupId(p.getGroupId());
- getBean(RecordingDao.class).update(f);
+ f.setParentId(Type.Folder == p.getType() ? p.getId() : null);
+ if (isRecording) {
+ Recording r = (Recording)f;
+ r.setGroupId(((Recording)p).getGroupId());
+ getBean(RecordingDao.class).update(r);
+ } else {
+ f.setRoomId(p.getRoomId());
+
getBean(FileExplorerItemDao.class).update((FileExplorerItem)f);
+ }
+ target.add(trees);
}
-
- public abstract void defineTrees();
-
- public abstract void update(AjaxRequestTarget target, FileItem f);
-
- public abstract void createFolder(String name);
public abstract void updateSizes();
- public FileItem getSelectedFile() {
- return selectedFile.getObject();
+ public FileItem getSelected() {
+ return selected.getObject();
+ }
+
+ void updateNode(AjaxRequestTarget target, FileItem fi) {
+ if (fi != null && target != null) {
+ if (Type.Folder == fi.getType()) {
+ tree.updateBranch(fi, target);
+ } else {
+ tree.updateNode(fi, target);
+ }
+ }
+ }
+
+ public void setSelected(FileItem fi, AjaxRequestTarget target) {
+ FileItem _prev = selected.getObject();
+ updateNode(target, _prev);
+ selected.setObject(fi);
+ updateNode(target, fi);
}
@Override
protected void onDetach() {
- selectedFile.detach();
+ selected.detach();
homeSize.detach();
publicSize.detach();
super.onDetach();
Modified:
openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FolderPanel.java
URL:
http://svn.apache.org/viewvc/openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FolderPanel.java?rev=1755671&r1=1755670&r2=1755671&view=diff
==============================================================================
---
openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FolderPanel.java
(original)
+++
openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FolderPanel.java
Wed Aug 10 05:34:01 2016
@@ -66,12 +66,12 @@ public class FolderPanel extends Panel {
if (o instanceof FileItem) {
FileItem p =
(FileItem)drop.getDefaultModelObject();
FileItem f = (FileItem)o;
- long pid = p.getId();
+ Long pid = p.getId();
//FIXME parent should not be moved to
child !!!!!!!
- if (pid == f.getId()) {
+ if (pid != null &&
pid.equals(f.getId())) {
return;
}
- f.setParentId(pid > 0 ? pid : null);
+ f.setParentId(pid);
f.setOwnerId(p.getOwnerId());
f.setRoomId(p.getRoomId());
if (f instanceof Recording) {
@@ -81,11 +81,13 @@ public class FolderPanel extends Panel {
} else {
getBean(FileExplorerItemDao.class).update((FileExplorerItem)f);
}
+ treePanel.updateNode(target, p);
+ treePanel.updateNode(target, f);
}
- target.add(treePanel.trees); //FIXME add
correct refresh
+ target.add(treePanel.trees);
}
} : new WebMarkupContainer("drop");
- if (r.getId() < 1) {
+ if (r.getId() == null) {
drag = new WebMarkupContainer("drag");
} else {
drag = new Draggable<FileItem>("drag", Model.of(r)) {
@@ -101,7 +103,7 @@ public class FolderPanel extends Panel {
}.setContainment(treePanel.getContainment());
drag.add(AttributeAppender.append("class", r instanceof
Recording ? "recorditem" : "fileitem"));
}
- drag.add(r.getId() < 1 ? new Label("name", r.getName()) : new
AjaxEditableLabel<String>("name", Model.of(model.getObject().getName())) {
+ drag.add(r.getId() == null ? new Label("name", r.getName()) :
new AjaxEditableLabel<String>("name", Model.of(model.getObject().getName())) {
private static final long serialVersionUID = 1L;
@Override
Added:
openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/OmTreeProvider.java
URL:
http://svn.apache.org/viewvc/openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/OmTreeProvider.java?rev=1755671&view=auto
==============================================================================
---
openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/OmTreeProvider.java
(added)
+++
openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/OmTreeProvider.java
Wed Aug 10 05:34:01 2016
@@ -0,0 +1,162 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.web.common.tree;
+
+import static org.apache.openmeetings.web.app.Application.getBean;
+import static org.apache.openmeetings.web.app.WebSession.getUserId;
+
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+
+import org.apache.openmeetings.db.dao.file.FileExplorerItemDao;
+import org.apache.openmeetings.db.dao.record.RecordingDao;
+import org.apache.openmeetings.db.dao.user.UserDao;
+import org.apache.openmeetings.db.entity.file.FileExplorerItem;
+import org.apache.openmeetings.db.entity.file.FileItem;
+import org.apache.openmeetings.db.entity.file.FileItem.Type;
+import org.apache.openmeetings.db.entity.record.Recording;
+import org.apache.openmeetings.db.entity.user.Group;
+import org.apache.openmeetings.db.entity.user.GroupUser;
+import org.apache.openmeetings.web.app.Application;
+import org.apache.wicket.extensions.markup.html.repeater.tree.ITreeProvider;
+import org.apache.wicket.model.IModel;
+import org.apache.wicket.model.Model;
+
+public class OmTreeProvider implements ITreeProvider<FileItem> {
+ private static final long serialVersionUID = 1L;
+ public static String RECORDINGS_MY = "recordings-my";
+ public static String RECORDINGS_PUBLIC = "recordings-public";
+ public static String RECORDINGS_GROUP = "recordings-group-%s";
+ public static String FILES_MY = "files-my";
+ public static String FILES_ROOM = "files-room";
+ private Long roomId = null;
+ private final List<FileItem> roots = new ArrayList<>();
+
+ public OmTreeProvider(Long roomId) {
+ this.roomId = roomId;
+ if (roomId != null) {
+ roots.add(createFileRoot(null));
+ roots.add(createFileRoot(roomId));
+ }
+ final String PUBLIC = Application.getString(861);
+ {
+ Recording r = createRecRoot(Application.getString(860),
RECORDINGS_MY);
+ r.setOwnerId(getUserId());
+ roots.add(r);
+ }
+ {
+ Recording r = createRecRoot(PUBLIC, RECORDINGS_PUBLIC);
+ roots.add(r);
+ }
+ for (GroupUser gu :
getBean(UserDao.class).get(getUserId()).getGroupUsers()) {
+ Group g = gu.getGroup();
+
+ Recording r = createRecRoot(String.format("%s (%s)",
PUBLIC, g.getName()), String.format(RECORDINGS_GROUP, g.getId()));
+ r.setGroupId(g.getId());
+ roots.add(r);
+ }
+ }
+
+ static Recording createRecRoot(String name, String hash) {
+ Recording r = new Recording();
+ r.setType(Type.Folder);
+ r.setName(name);
+ r.setHash(hash);
+ return r;
+ }
+
+ static FileExplorerItem createFileRoot(Long roomId) {
+ FileExplorerItem f = new FileExplorerItem();
+ f.setRoomId(roomId);
+ f.setType(Type.Folder);
+ if (roomId == null) {
+ f.setOwnerId(getUserId());
+ f.setName(Application.getString(706));
+ f.setHash(FILES_MY);
+ } else {
+ f.setName(Application.getString(707));
+ f.setHash(FILES_ROOM);
+ }
+ return f;
+ }
+
+ public FileItem getRoot() {
+ return roots.get(0);
+ }
+
+ @Override
+ public Iterator<FileItem> getRoots() {
+ return roots.iterator();
+ }
+
+ @Override
+ public Iterator<FileItem> getChildren(FileItem node) {
+ List<FileItem> list = new ArrayList<>();
+ if (node instanceof Recording) {
+ Recording rec = (Recording)node;
+ RecordingDao dao = getBean(RecordingDao.class);
+ List<Recording> _list;
+ if (node.getId() == null) {
+ if (node.getOwnerId() == null) {
+ _list =
dao.getRootByPublic(rec.getGroupId());
+ } else {
+ _list =
dao.getRootByOwner(node.getOwnerId());
+ }
+ } else {
+ _list = dao.getByParent(node.getId());
+ }
+ for (Recording r : _list) {
+ list.add(r);
+ }
+ } else {
+ FileExplorerItemDao dao =
getBean(FileExplorerItemDao.class);
+ List<FileExplorerItem> _list;
+ if (node.getId() == null) {
+ if (roomId == null) {
+ _list = dao.getByRoom(roomId);
+ } else {
+ _list =
dao.getByOwner(node.getOwnerId());
+ }
+ } else {
+ _list = dao.getByParent(node.getId());
+ }
+ for (FileExplorerItem r : _list) {
+ list.add(r);
+ }
+ }
+ return list.iterator();
+ }
+
+ @Override
+ public boolean hasChildren(FileItem node) {
+ return node.getId() == null || Type.Folder == node.getType();
+ }
+
+ @Override
+ public IModel<FileItem> model(FileItem object) {
+ // TODO LDM should be used
+ return Model.of(object);
+ }
+
+ @Override
+ public void detach() {
+ // TODO LDM should be used
+ }
+}
Modified:
openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/RoomFilePanel.java
URL:
http://svn.apache.org/viewvc/openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/RoomFilePanel.java?rev=1755671&r1=1755670&r2=1755671&view=diff
==============================================================================
---
openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/RoomFilePanel.java
(original)
+++
openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/RoomFilePanel.java
Wed Aug 10 05:34:01 2016
@@ -18,40 +18,19 @@
*/
package org.apache.openmeetings.web.room.sidebar;
-import static org.apache.openmeetings.web.app.Application.getBean;
-import static org.apache.openmeetings.web.app.WebSession.getUserId;
-
-import java.util.Arrays;
-import java.util.Date;
-import java.util.Iterator;
-import java.util.List;
-
-import org.apache.openmeetings.db.dao.file.FileExplorerItemDao;
-import org.apache.openmeetings.db.dao.user.UserDao;
-import org.apache.openmeetings.db.entity.file.FileExplorerItem;
import org.apache.openmeetings.db.entity.file.FileItem;
-import org.apache.openmeetings.db.entity.file.FileItem.Type;
-import org.apache.openmeetings.db.entity.record.Recording;
-import org.apache.openmeetings.db.entity.user.Group;
-import org.apache.openmeetings.db.entity.user.GroupUser;
-import org.apache.openmeetings.web.app.Application;
import org.apache.openmeetings.web.common.tree.FileTreePanel;
-import org.apache.openmeetings.web.common.tree.MyRecordingTreeProvider;
-import org.apache.openmeetings.web.common.tree.PublicRecordingTreeProvider;
import org.apache.openmeetings.web.room.RoomPanel;
import org.apache.wicket.Component;
import org.apache.wicket.ajax.AjaxEventBehavior;
import org.apache.wicket.ajax.AjaxRequestTarget;
-import org.apache.wicket.extensions.markup.html.repeater.tree.ITreeProvider;
-import org.apache.wicket.model.IModel;
-import org.apache.wicket.model.Model;
public class RoomFilePanel extends FileTreePanel {
private static final long serialVersionUID = 1L;
private final RoomPanel room;
public RoomFilePanel(String id, RoomPanel room) {
- super(id);
+ super(id, room.getRoom().getId());
this.room = room;
}
@@ -62,7 +41,7 @@ public class RoomFilePanel extends FileT
}
@Override
- public void update(AjaxRequestTarget target, FileItem f) {
+ protected void update(AjaxRequestTarget target, FileItem f) {
// TODO Auto-generated method stub
}
@@ -86,93 +65,4 @@ public class RoomFilePanel extends FileT
});
return u;
}
-
- @Override
- public void defineTrees() {
- FileExplorerItem f = new FileExplorerItem();
- f.setOwnerId(getUserId());
- selectedFile.setObject(f);
- treesView.getList().add(new FilesTreeProvider(null));
- treesView.getList().add(new
FilesTreeProvider(room.getRoom().getId()));
- treesView.getList().add(new MyRecordingTreeProvider());
- treesView.getList().add(new PublicRecordingTreeProvider(null,
null));
- for (GroupUser ou :
getBean(UserDao.class).get(getUserId()).getGroupUsers()) {
- Group o = ou.getGroup();
- treesView.getList().add(new
PublicRecordingTreeProvider(o.getId(), o.getName()));
- }
- }
-
- @Override
- public void createFolder(String name) {
- if (selectedFile.getObject() instanceof Recording) {
- createRecordingFolder(name);
- } else {
- FileExplorerItem f = new FileExplorerItem();
- f.setName(name);
- f.setInsertedBy(getUserId());
- f.setInserted(new Date());
- f.setType(Type.Folder);;
- FileItem p = selectedFile.getObject();
- long parentId = p.getId();
- f.setParentId(Type.Folder == p.getType() && parentId >
0 ? parentId : null);
- f.setOwnerId(p.getOwnerId());
- f.setRoomId(p.getRoomId());
- getBean(FileExplorerItemDao.class).update(f);
- }
- }
-
- static class FilesTreeProvider implements
ITreeProvider<FileExplorerItem> {
- private static final long serialVersionUID = 1L;
- Long roomId = null;
-
- FilesTreeProvider(Long roomId) {
- this.roomId = roomId;
- }
-
- @Override
- public void detach() {
- // TODO LDM should be used
- }
-
- @Override
- public boolean hasChildren(FileExplorerItem node) {
- return node.getId() <= 0 || Type.Folder ==
node.getType();
- }
-
- @Override
- public Iterator<? extends FileExplorerItem>
getChildren(FileExplorerItem node) {
- FileExplorerItemDao dao =
getBean(FileExplorerItemDao.class);
- List<FileExplorerItem> list = null;
- if (node.getId() == 0) {
- list = dao.getByOwner(node.getOwnerId());
- } else if (node.getId() < 0) {
- list = dao.getByRoom(roomId);
- } else {
- list = dao.getByParent(node.getId());
- }
- return list.iterator();
- }
-
- @Override
- public IModel<FileExplorerItem> model(FileExplorerItem object) {
- // TODO LDM should be used
- return Model.of(object);
- }
-
- @Override
- public Iterator<? extends FileExplorerItem> getRoots() {
- FileExplorerItem f = new FileExplorerItem();
- f.setRoomId(roomId);
- f.setType(Type.Folder);
- if (roomId == null) {
- f.setId(0L);
- f.setOwnerId(getUserId());
- f.setName(Application.getString(706));
- } else {
- f.setId(-roomId);
- f.setName(Application.getString(707));
- }
- return Arrays.asList(f).iterator();
- }
- }
}
Modified:
openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/UploadDialog.java
URL:
http://svn.apache.org/viewvc/openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/UploadDialog.java?rev=1755671&r1=1755670&r2=1755671&view=diff
==============================================================================
---
openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/UploadDialog.java
(original)
+++
openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/UploadDialog.java
Wed Aug 10 05:34:01 2016
@@ -161,7 +161,7 @@ public class UploadDialog extends Abstra
FileExplorerItem f = new FileExplorerItem();
f.setSize(fu.getSize());
f.setName(fu.getClientFileName());
- FileItem parent = roomFiles.getSelectedFile();
+ FileItem parent = roomFiles.getSelected();
if (parent == null || !(parent instanceof
FileExplorerItem)) {
f.setOwnerId(getUserId());
} else {
Modified:
openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/record/RecordingsPanel.java
URL:
http://svn.apache.org/viewvc/openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/record/RecordingsPanel.java?rev=1755671&r1=1755670&r2=1755671&view=diff
==============================================================================
---
openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/record/RecordingsPanel.java
(original)
+++
openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/record/RecordingsPanel.java
Wed Aug 10 05:34:01 2016
@@ -23,16 +23,11 @@ import static org.apache.openmeetings.we
import static org.apache.openmeetings.web.app.WebSession.getUserId;
import org.apache.openmeetings.db.dao.record.RecordingDao;
-import org.apache.openmeetings.db.dao.user.UserDao;
import org.apache.openmeetings.db.dto.record.RecordingContainerData;
import org.apache.openmeetings.db.entity.file.FileItem;
import org.apache.openmeetings.db.entity.record.Recording;
-import org.apache.openmeetings.db.entity.user.Group;
-import org.apache.openmeetings.db.entity.user.GroupUser;
import org.apache.openmeetings.web.common.UserPanel;
import org.apache.openmeetings.web.common.tree.FileTreePanel;
-import org.apache.openmeetings.web.common.tree.MyRecordingTreeProvider;
-import org.apache.openmeetings.web.common.tree.PublicRecordingTreeProvider;
import org.apache.wicket.ajax.AjaxRequestTarget;
public class RecordingsPanel extends UserPanel {
@@ -42,21 +37,10 @@ public class RecordingsPanel extends Use
public RecordingsPanel(String id) {
super(id);
- add(new FileTreePanel("tree") {
+ add(new FileTreePanel("tree", null) {
private static final long serialVersionUID = 1L;
@Override
- public void defineTrees() {
- selectedFile.setObject(new Recording());
- treesView.getList().add(new
MyRecordingTreeProvider());
- treesView.getList().add(new
PublicRecordingTreeProvider(null, null));
- for (GroupUser ou :
getBean(UserDao.class).get(getUserId()).getGroupUsers()) {
- Group o = ou.getGroup();
- treesView.getList().add(new
PublicRecordingTreeProvider(o.getId(), o.getName()));
- }
- }
-
- @Override
public void updateSizes() {
RecordingContainerData sizeData =
getBean(RecordingDao.class).getContainerData(getUserId());
if (sizeData != null) {
@@ -66,15 +50,10 @@ public class RecordingsPanel extends Use
}
@Override
- public void update(AjaxRequestTarget target, FileItem
f) {
+ protected void update(AjaxRequestTarget target,
FileItem f) {
video.update(target, (Recording)f);
info.update(target, (Recording)f);
}
-
- @Override
- public void createFolder(String name) {
- createRecordingFolder(name);
- }
});
add(video, info);
}
Modified:
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/AddFolderDialog.java
URL:
http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/AddFolderDialog.java?rev=1755671&r1=1755670&r2=1755671&view=diff
==============================================================================
---
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/AddFolderDialog.java
(original)
+++
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/AddFolderDialog.java
Wed Aug 10 05:34:01 2016
@@ -70,13 +70,13 @@ public abstract class AddFolderDialog ex
});
}
};
- add(form);
+ add(form.setOutputMarkupId(true));
}
@Override
protected void onOpen(IPartialPageRequestHandler handler) {
super.onOpen(handler);
-
+ handler.add(form);
setModelObject(name);
getFeedbackMessages().clear();
}
Modified:
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FileItemTree.java
URL:
http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FileItemTree.java?rev=1755671&r1=1755670&r2=1755671&view=diff
==============================================================================
---
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FileItemTree.java
(original)
+++
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FileItemTree.java
Wed Aug 10 05:34:01 2016
@@ -34,31 +34,32 @@ import org.apache.wicket.markup.repeater
import org.apache.wicket.model.IModel;
import org.apache.wicket.model.Model;
-public class FileItemTree<T extends FileItem> extends DefaultNestedTree<T> {
+public class FileItemTree extends DefaultNestedTree<FileItem> {
private static final long serialVersionUID = 1L;
private final FileTreePanel treePanel;
- private final IModel<T> selectedItem = Model.of((T)null);
- public FileItemTree(String id, FileTreePanel treePanel,
ITreeProvider<T> tp) {
+ public FileItemTree(String id, FileTreePanel treePanel,
ITreeProvider<FileItem> tp) {
super(id, tp);
this.treePanel = treePanel;
setItemReuseStrategy(new ReuseIfModelsEqualStrategy());
}
@Override
- protected Component newContentComponent(String id, IModel<T> node) {
- return new Folder<T>(id, this, node) {
+ protected Component newContentComponent(String id, IModel<FileItem>
node) {
+ return new Folder<FileItem>(id, this, node) {
private static final long serialVersionUID = 1L;
@Override
- protected Component newLabelComponent(String id, final
IModel<T> lm) {
+ protected Component newLabelComponent(String id, final
IModel<FileItem> lm) {
FileItem r = lm.getObject();
- return Type.Folder == r.getType() || r.getId()
< 1 ? new FolderPanel(id, lm, treePanel) : new FileItemPanel(id, lm, treePanel);
+ return Type.Folder == r.getType() || r.getId()
== null ? new FolderPanel(id, lm, treePanel) : new FileItemPanel(id, lm,
treePanel);
}
@Override
protected boolean isSelected() {
- return
getModelObject().getId().equals(treePanel.selectedFile.getObject().getId());
+ FileItem f = getModelObject(), s =
treePanel.getSelected();
+ return (s.getId() == null && s.getId() ==
f.getId() && s.getHash().equals(f.getHash()))
+ || (s.getId() != null &&
s.getId().equals(f.getId()));
}
@Override
@@ -68,28 +69,21 @@ public class FileItemTree<T extends File
@Override
protected void onClick(AjaxRequestTarget target) {
- T r = getModelObject();
- treePanel.selected.resetSelected(target);
- selectedItem.setObject(r);
- treePanel.selectedFile.setObject(r);
- treePanel.selected = FileItemTree.this;
+ FileItem r = getModelObject();
+ treePanel.setSelected(r, target);
if (Type.Folder == r.getType()) {
if (getState(r) == State.COLLAPSED) {
super.onClick(target);
}
- updateBranch(r, target);
} else {
treePanel.update(target, r);
- updateNode(r, target);
}
}
- private String getItemStyle(T f, String def) {
+ private String getItemStyle(FileItem f, String def) {
String style;
- if (f.getId() == 0) {
- style = "my file om-icon";
- } else if (f.getId() < 0) {
- style = "public file om-icon";
+ if (f.getId() == null) {
+ style = f.getHash().indexOf("my") > -1
? "my file om-icon" : "public file om-icon";
} else {
switch(f.getType()) {
case Folder:
@@ -129,7 +123,7 @@ public class FileItemTree<T extends File
}
@Override
- protected String getOtherStyleClass(T r) {
+ protected String getOtherStyleClass(FileItem r) {
return getItemStyle(r,
super.getOtherStyleClass(r));
}
@@ -149,27 +143,9 @@ public class FileItemTree<T extends File
}
@Override
- protected IModel<String> newLabelModel(IModel<T> model)
{
+ protected IModel<String> newLabelModel(IModel<FileItem>
model) {
return Model.of(model.getObject().getName());
}
};
}
-
- private void resetSelected(AjaxRequestTarget target) {
- T _prev = selectedItem.getObject();
- if (_prev != null) {
- if (Type.Folder == _prev.getType()) {
- updateBranch(_prev, target);
- } else {
- updateNode(_prev, target);
- }
- selectedItem.setObject(null);
- }
- }
-
- @Override
- protected void onDetach() {
- selectedItem.detach();
- super.onDetach();
- }
}
Modified:
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FileTreePanel.html
URL:
http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FileTreePanel.html?rev=1755671&r1=1755670&r2=1755671&view=diff
==============================================================================
---
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FileTreePanel.html
(original)
+++
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FileTreePanel.html
Wed Aug 10 05:34:01 2016
@@ -37,9 +37,7 @@
</div>
<div wicket:id="tree-container" class="trees">
<div id="tree-anchor" style="height: 2px; width:
2px;"></div>
- <div wicket:id="tree">
- <div wicket:id="item"></div>
- </div>
+ <div wicket:id="tree"></div>
</div>
<div class="sizes" wicket:id="sizes">
<table>
Modified:
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FileTreePanel.java
URL:
http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FileTreePanel.java?rev=1755671&r1=1755670&r2=1755671&view=diff
==============================================================================
---
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FileTreePanel.java
(original)
+++
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FileTreePanel.java
Wed Aug 10 05:34:01 2016
@@ -21,7 +21,6 @@ package org.apache.openmeetings.web.comm
import static org.apache.openmeetings.web.app.Application.getBean;
import static org.apache.openmeetings.web.app.WebSession.getUserId;
-import java.util.ArrayList;
import java.util.Date;
import java.util.UUID;
@@ -39,12 +38,9 @@ import org.apache.wicket.ajax.AjaxEventB
import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.ajax.attributes.CallbackParameter;
import org.apache.wicket.core.request.handler.IPartialPageRequestHandler;
-import org.apache.wicket.extensions.markup.html.repeater.tree.ITreeProvider;
import org.apache.wicket.markup.html.WebMarkupContainer;
import org.apache.wicket.markup.html.basic.Label;
import org.apache.wicket.markup.html.form.Form;
-import org.apache.wicket.markup.html.list.ListItem;
-import org.apache.wicket.markup.html.list.ListView;
import org.apache.wicket.markup.html.panel.Panel;
import org.apache.wicket.model.CompoundPropertyModel;
import org.apache.wicket.model.IModel;
@@ -61,41 +57,28 @@ public abstract class FileTreePanel exte
private static final long serialVersionUID = 1L;
final WebMarkupContainer trees = new
WebMarkupContainer("tree-container");
private final WebMarkupContainer sizes = new
WebMarkupContainer("sizes");
- protected final IModel<FileItem> selectedFile = new
CompoundPropertyModel<FileItem>((FileItem)null);
+ private final IModel<FileItem> selected = new
CompoundPropertyModel<FileItem>((FileItem)null);
protected final IModel<String> homeSize = Model.of((String)null);
protected final IModel<String> publicSize = Model.of((String)null);
final ConvertingErrorsDialog errorsDialog = new
ConvertingErrorsDialog("errors", Model.of((Recording)null));
- protected FileItemTree<? extends FileItem> selected;
- protected ListView<ITreeProvider<? extends FileItem>> treesView = new
ListView<ITreeProvider<? extends FileItem>>("tree", new
ArrayList<ITreeProvider<? extends FileItem>>()) {
- private static final long serialVersionUID = 1L;
-
- @Override
- protected void populateItem(ListItem<ITreeProvider<? extends
FileItem>> item) {
- @SuppressWarnings({ "unchecked", "rawtypes" }) //TODO
investigate this
- FileItemTree<? extends FileItem> fit = new
FileItemTree("item", FileTreePanel.this, item.getModelObject());
- if (selected == null) {
- selected = fit;
- }
- item.add(fit);
- }
- };
+ final FileItemTree tree;
- public FileTreePanel(String id) {
+ public FileTreePanel(String id, Long roomId) {
super(id);
+ OmTreeProvider tp = new OmTreeProvider(roomId);
+ setSelected(tp.getRoot(), null);
+ add(tree = new FileItemTree("tree", this, tp));
}
@Override
protected void onInitialize() {
super.onInitialize();
- defineTrees();
- selectedFile.getObject().setId(Long.MIN_VALUE);
final AddFolderDialog addFolder = new
AddFolderDialog("addFolder", Application.getString(712)) {
private static final long serialVersionUID = 1L;
@Override
protected void onSubmit(AjaxRequestTarget target) {
- createFolder(getModelObject());
- target.add(trees); //FIXME add correct refresh
+ createFolder(target, getModelObject());
}
};
add(addFolder);
@@ -163,7 +146,7 @@ public abstract class FileTreePanel exte
@Override
protected void onEvent(AjaxRequestTarget target) {
- target.add(trees); //FIXME add correct refresh
+ target.add(trees);
}
}));
trashToolbar.add(new ConfirmableAjaxBorder("trash",
getString("80"), getString("713")) {
@@ -171,7 +154,7 @@ public abstract class FileTreePanel exte
@Override
protected void onEvent(AjaxRequestTarget target) {
- FileItem f = selectedFile.getObject();
+ FileItem f = selected.getObject();
if (f != null && f.getId() > 0) {
super.onEvent(target);
}
@@ -179,11 +162,11 @@ public abstract class FileTreePanel exte
@Override
protected void onSubmit(AjaxRequestTarget target,
Form<?> form) {
- delete(selectedFile.getObject(), target);
+ delete(selected.getObject(), target);
}
});
- add(trees.add(treesView).setOutputMarkupId(true));
+ add(trees.add(tree).setOutputMarkupId(true));
updateSizes();
add(sizes.add(new Label("homeSize", homeSize), new
Label("publicSize", publicSize)).setOutputMarkupId(true));
add(errorsDialog);
@@ -206,40 +189,61 @@ public abstract class FileTreePanel exte
getBean(FileExplorerItemDao.class).delete((FileExplorerItem)f);
}
}
- handler.add(trees); //FIXME add correct refresh
+ handler.add(trees);
}
- public void createRecordingFolder(String name) {
- Recording f = new Recording();
+ protected abstract void update(AjaxRequestTarget target, FileItem f);
+
+ protected void createFolder(AjaxRequestTarget target, String name) {
+ FileItem p = selected.getObject();
+ boolean isRecording = p instanceof Recording;
+ if (Type.Folder != p.getType()) {
+
+ }
+ FileItem f = isRecording ? new Recording() : new
FileExplorerItem();
f.setName(name);
f.setInsertedBy(getUserId());
f.setInserted(new Date());
- f.setType(Type.Folder);;
- Recording p = (Recording)selectedFile.getObject();
- long parentId = p.getId();
- if (Type.Folder == p.getType()) {
- f.setParentId(parentId);
- }
+ f.setType(Type.Folder);
f.setOwnerId(p.getOwnerId());
- f.setGroupId(p.getGroupId());
- getBean(RecordingDao.class).update(f);
+ f.setParentId(Type.Folder == p.getType() ? p.getId() : null);
+ if (isRecording) {
+ Recording r = (Recording)f;
+ r.setGroupId(((Recording)p).getGroupId());
+ getBean(RecordingDao.class).update(r);
+ } else {
+ f.setRoomId(p.getRoomId());
+
getBean(FileExplorerItemDao.class).update((FileExplorerItem)f);
+ }
+ target.add(trees);
}
-
- public abstract void defineTrees();
-
- public abstract void update(AjaxRequestTarget target, FileItem f);
-
- public abstract void createFolder(String name);
public abstract void updateSizes();
- public FileItem getSelectedFile() {
- return selectedFile.getObject();
+ public FileItem getSelected() {
+ return selected.getObject();
+ }
+
+ void updateNode(AjaxRequestTarget target, FileItem fi) {
+ if (fi != null && target != null) {
+ if (Type.Folder == fi.getType()) {
+ tree.updateBranch(fi, target);
+ } else {
+ tree.updateNode(fi, target);
+ }
+ }
+ }
+
+ public void setSelected(FileItem fi, AjaxRequestTarget target) {
+ FileItem _prev = selected.getObject();
+ updateNode(target, _prev);
+ selected.setObject(fi);
+ updateNode(target, fi);
}
@Override
protected void onDetach() {
- selectedFile.detach();
+ selected.detach();
homeSize.detach();
publicSize.detach();
super.onDetach();
Modified:
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FolderPanel.java
URL:
http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FolderPanel.java?rev=1755671&r1=1755670&r2=1755671&view=diff
==============================================================================
---
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FolderPanel.java
(original)
+++
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FolderPanel.java
Wed Aug 10 05:34:01 2016
@@ -66,12 +66,12 @@ public class FolderPanel extends Panel {
if (o instanceof FileItem) {
FileItem p =
(FileItem)drop.getDefaultModelObject();
FileItem f = (FileItem)o;
- long pid = p.getId();
+ Long pid = p.getId();
//FIXME parent should not be moved to
child !!!!!!!
- if (pid == f.getId()) {
+ if (pid != null &&
pid.equals(f.getId())) {
return;
}
- f.setParentId(pid > 0 ? pid : null);
+ f.setParentId(pid);
f.setOwnerId(p.getOwnerId());
f.setRoomId(p.getRoomId());
if (f instanceof Recording) {
@@ -81,11 +81,13 @@ public class FolderPanel extends Panel {
} else {
getBean(FileExplorerItemDao.class).update((FileExplorerItem)f);
}
+ treePanel.updateNode(target, p);
+ treePanel.updateNode(target, f);
}
- target.add(treePanel.trees); //FIXME add
correct refresh
+ target.add(treePanel.trees);
}
} : new WebMarkupContainer("drop");
- if (r.getId() < 1) {
+ if (r.getId() == null) {
drag = new WebMarkupContainer("drag");
} else {
drag = new Draggable<FileItem>("drag", Model.of(r)) {
@@ -101,7 +103,7 @@ public class FolderPanel extends Panel {
}.setContainment(treePanel.getContainment());
drag.add(AttributeAppender.append("class", r instanceof
Recording ? "recorditem" : "fileitem"));
}
- drag.add(r.getId() < 1 ? new Label("name", r.getName()) : new
AjaxEditableLabel<String>("name", Model.of(model.getObject().getName())) {
+ drag.add(r.getId() == null ? new Label("name", r.getName()) :
new AjaxEditableLabel<String>("name", Model.of(model.getObject().getName())) {
private static final long serialVersionUID = 1L;
@Override
Added:
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/OmTreeProvider.java
URL:
http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/OmTreeProvider.java?rev=1755671&view=auto
==============================================================================
---
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/OmTreeProvider.java
(added)
+++
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/OmTreeProvider.java
Wed Aug 10 05:34:01 2016
@@ -0,0 +1,162 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.web.common.tree;
+
+import static org.apache.openmeetings.web.app.Application.getBean;
+import static org.apache.openmeetings.web.app.WebSession.getUserId;
+
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+
+import org.apache.openmeetings.db.dao.file.FileExplorerItemDao;
+import org.apache.openmeetings.db.dao.record.RecordingDao;
+import org.apache.openmeetings.db.dao.user.UserDao;
+import org.apache.openmeetings.db.entity.file.FileExplorerItem;
+import org.apache.openmeetings.db.entity.file.FileItem;
+import org.apache.openmeetings.db.entity.file.FileItem.Type;
+import org.apache.openmeetings.db.entity.record.Recording;
+import org.apache.openmeetings.db.entity.user.Group;
+import org.apache.openmeetings.db.entity.user.GroupUser;
+import org.apache.openmeetings.web.app.Application;
+import org.apache.wicket.extensions.markup.html.repeater.tree.ITreeProvider;
+import org.apache.wicket.model.IModel;
+import org.apache.wicket.model.Model;
+
+public class OmTreeProvider implements ITreeProvider<FileItem> {
+ private static final long serialVersionUID = 1L;
+ public static String RECORDINGS_MY = "recordings-my";
+ public static String RECORDINGS_PUBLIC = "recordings-public";
+ public static String RECORDINGS_GROUP = "recordings-group-%s";
+ public static String FILES_MY = "files-my";
+ public static String FILES_ROOM = "files-room";
+ private Long roomId = null;
+ private final List<FileItem> roots = new ArrayList<>();
+
+ public OmTreeProvider(Long roomId) {
+ this.roomId = roomId;
+ if (roomId != null) {
+ roots.add(createFileRoot(null));
+ roots.add(createFileRoot(roomId));
+ }
+ final String PUBLIC = Application.getString(861);
+ {
+ Recording r = createRecRoot(Application.getString(860),
RECORDINGS_MY);
+ r.setOwnerId(getUserId());
+ roots.add(r);
+ }
+ {
+ Recording r = createRecRoot(PUBLIC, RECORDINGS_PUBLIC);
+ roots.add(r);
+ }
+ for (GroupUser gu :
getBean(UserDao.class).get(getUserId()).getGroupUsers()) {
+ Group g = gu.getGroup();
+
+ Recording r = createRecRoot(String.format("%s (%s)",
PUBLIC, g.getName()), String.format(RECORDINGS_GROUP, g.getId()));
+ r.setGroupId(g.getId());
+ roots.add(r);
+ }
+ }
+
+ static Recording createRecRoot(String name, String hash) {
+ Recording r = new Recording();
+ r.setType(Type.Folder);
+ r.setName(name);
+ r.setHash(hash);
+ return r;
+ }
+
+ static FileExplorerItem createFileRoot(Long roomId) {
+ FileExplorerItem f = new FileExplorerItem();
+ f.setRoomId(roomId);
+ f.setType(Type.Folder);
+ if (roomId == null) {
+ f.setOwnerId(getUserId());
+ f.setName(Application.getString(706));
+ f.setHash(FILES_MY);
+ } else {
+ f.setName(Application.getString(707));
+ f.setHash(FILES_ROOM);
+ }
+ return f;
+ }
+
+ public FileItem getRoot() {
+ return roots.get(0);
+ }
+
+ @Override
+ public Iterator<FileItem> getRoots() {
+ return roots.iterator();
+ }
+
+ @Override
+ public Iterator<FileItem> getChildren(FileItem node) {
+ List<FileItem> list = new ArrayList<>();
+ if (node instanceof Recording) {
+ Recording rec = (Recording)node;
+ RecordingDao dao = getBean(RecordingDao.class);
+ List<Recording> _list;
+ if (node.getId() == null) {
+ if (node.getOwnerId() == null) {
+ _list =
dao.getRootByPublic(rec.getGroupId());
+ } else {
+ _list =
dao.getRootByOwner(node.getOwnerId());
+ }
+ } else {
+ _list = dao.getByParent(node.getId());
+ }
+ for (Recording r : _list) {
+ list.add(r);
+ }
+ } else {
+ FileExplorerItemDao dao =
getBean(FileExplorerItemDao.class);
+ List<FileExplorerItem> _list;
+ if (node.getId() == null) {
+ if (roomId == null) {
+ _list = dao.getByRoom(roomId);
+ } else {
+ _list =
dao.getByOwner(node.getOwnerId());
+ }
+ } else {
+ _list = dao.getByParent(node.getId());
+ }
+ for (FileExplorerItem r : _list) {
+ list.add(r);
+ }
+ }
+ return list.iterator();
+ }
+
+ @Override
+ public boolean hasChildren(FileItem node) {
+ return node.getId() == null || Type.Folder == node.getType();
+ }
+
+ @Override
+ public IModel<FileItem> model(FileItem object) {
+ // TODO LDM should be used
+ return Model.of(object);
+ }
+
+ @Override
+ public void detach() {
+ // TODO LDM should be used
+ }
+}
Modified:
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/RoomFilePanel.java
URL:
http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/RoomFilePanel.java?rev=1755671&r1=1755670&r2=1755671&view=diff
==============================================================================
---
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/RoomFilePanel.java
(original)
+++
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/RoomFilePanel.java
Wed Aug 10 05:34:01 2016
@@ -18,40 +18,19 @@
*/
package org.apache.openmeetings.web.room.sidebar;
-import static org.apache.openmeetings.web.app.Application.getBean;
-import static org.apache.openmeetings.web.app.WebSession.getUserId;
-
-import java.util.Arrays;
-import java.util.Date;
-import java.util.Iterator;
-import java.util.List;
-
-import org.apache.openmeetings.db.dao.file.FileExplorerItemDao;
-import org.apache.openmeetings.db.dao.user.UserDao;
-import org.apache.openmeetings.db.entity.file.FileExplorerItem;
import org.apache.openmeetings.db.entity.file.FileItem;
-import org.apache.openmeetings.db.entity.file.FileItem.Type;
-import org.apache.openmeetings.db.entity.record.Recording;
-import org.apache.openmeetings.db.entity.user.Group;
-import org.apache.openmeetings.db.entity.user.GroupUser;
-import org.apache.openmeetings.web.app.Application;
import org.apache.openmeetings.web.common.tree.FileTreePanel;
-import org.apache.openmeetings.web.common.tree.MyRecordingTreeProvider;
-import org.apache.openmeetings.web.common.tree.PublicRecordingTreeProvider;
import org.apache.openmeetings.web.room.RoomPanel;
import org.apache.wicket.Component;
import org.apache.wicket.ajax.AjaxEventBehavior;
import org.apache.wicket.ajax.AjaxRequestTarget;
-import org.apache.wicket.extensions.markup.html.repeater.tree.ITreeProvider;
-import org.apache.wicket.model.IModel;
-import org.apache.wicket.model.Model;
public class RoomFilePanel extends FileTreePanel {
private static final long serialVersionUID = 1L;
private final RoomPanel room;
public RoomFilePanel(String id, RoomPanel room) {
- super(id);
+ super(id, room.getRoom().getId());
this.room = room;
}
@@ -62,7 +41,7 @@ public class RoomFilePanel extends FileT
}
@Override
- public void update(AjaxRequestTarget target, FileItem f) {
+ protected void update(AjaxRequestTarget target, FileItem f) {
// TODO Auto-generated method stub
}
@@ -86,93 +65,4 @@ public class RoomFilePanel extends FileT
});
return u;
}
-
- @Override
- public void defineTrees() {
- FileExplorerItem f = new FileExplorerItem();
- f.setOwnerId(getUserId());
- selectedFile.setObject(f);
- treesView.getList().add(new FilesTreeProvider(null));
- treesView.getList().add(new
FilesTreeProvider(room.getRoom().getId()));
- treesView.getList().add(new MyRecordingTreeProvider());
- treesView.getList().add(new PublicRecordingTreeProvider(null,
null));
- for (GroupUser ou :
getBean(UserDao.class).get(getUserId()).getGroupUsers()) {
- Group o = ou.getGroup();
- treesView.getList().add(new
PublicRecordingTreeProvider(o.getId(), o.getName()));
- }
- }
-
- @Override
- public void createFolder(String name) {
- if (selectedFile.getObject() instanceof Recording) {
- createRecordingFolder(name);
- } else {
- FileExplorerItem f = new FileExplorerItem();
- f.setName(name);
- f.setInsertedBy(getUserId());
- f.setInserted(new Date());
- f.setType(Type.Folder);;
- FileItem p = selectedFile.getObject();
- long parentId = p.getId();
- f.setParentId(Type.Folder == p.getType() && parentId >
0 ? parentId : null);
- f.setOwnerId(p.getOwnerId());
- f.setRoomId(p.getRoomId());
- getBean(FileExplorerItemDao.class).update(f);
- }
- }
-
- static class FilesTreeProvider implements
ITreeProvider<FileExplorerItem> {
- private static final long serialVersionUID = 1L;
- Long roomId = null;
-
- FilesTreeProvider(Long roomId) {
- this.roomId = roomId;
- }
-
- @Override
- public void detach() {
- // TODO LDM should be used
- }
-
- @Override
- public boolean hasChildren(FileExplorerItem node) {
- return node.getId() <= 0 || Type.Folder ==
node.getType();
- }
-
- @Override
- public Iterator<? extends FileExplorerItem>
getChildren(FileExplorerItem node) {
- FileExplorerItemDao dao =
getBean(FileExplorerItemDao.class);
- List<FileExplorerItem> list = null;
- if (node.getId() == 0) {
- list = dao.getByOwner(node.getOwnerId());
- } else if (node.getId() < 0) {
- list = dao.getByRoom(roomId);
- } else {
- list = dao.getByParent(node.getId());
- }
- return list.iterator();
- }
-
- @Override
- public IModel<FileExplorerItem> model(FileExplorerItem object) {
- // TODO LDM should be used
- return Model.of(object);
- }
-
- @Override
- public Iterator<? extends FileExplorerItem> getRoots() {
- FileExplorerItem f = new FileExplorerItem();
- f.setRoomId(roomId);
- f.setType(Type.Folder);
- if (roomId == null) {
- f.setId(0L);
- f.setOwnerId(getUserId());
- f.setName(Application.getString(706));
- } else {
- f.setId(-roomId);
- f.setName(Application.getString(707));
- }
- return Arrays.asList(f).iterator();
- }
- }
}
Modified:
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/UploadDialog.java
URL:
http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/UploadDialog.java?rev=1755671&r1=1755670&r2=1755671&view=diff
==============================================================================
---
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/UploadDialog.java
(original)
+++
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/UploadDialog.java
Wed Aug 10 05:34:01 2016
@@ -161,7 +161,7 @@ public class UploadDialog extends Abstra
FileExplorerItem f = new FileExplorerItem();
f.setSize(fu.getSize());
f.setName(fu.getClientFileName());
- FileItem parent = roomFiles.getSelectedFile();
+ FileItem parent = roomFiles.getSelected();
if (parent == null || !(parent instanceof
FileExplorerItem)) {
f.setOwnerId(getUserId());
} else {
Modified:
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/record/RecordingsPanel.java
URL:
http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/record/RecordingsPanel.java?rev=1755671&r1=1755670&r2=1755671&view=diff
==============================================================================
---
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/record/RecordingsPanel.java
(original)
+++
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/record/RecordingsPanel.java
Wed Aug 10 05:34:01 2016
@@ -23,16 +23,11 @@ import static org.apache.openmeetings.we
import static org.apache.openmeetings.web.app.WebSession.getUserId;
import org.apache.openmeetings.db.dao.record.RecordingDao;
-import org.apache.openmeetings.db.dao.user.UserDao;
import org.apache.openmeetings.db.dto.record.RecordingContainerData;
import org.apache.openmeetings.db.entity.file.FileItem;
import org.apache.openmeetings.db.entity.record.Recording;
-import org.apache.openmeetings.db.entity.user.Group;
-import org.apache.openmeetings.db.entity.user.GroupUser;
import org.apache.openmeetings.web.common.UserPanel;
import org.apache.openmeetings.web.common.tree.FileTreePanel;
-import org.apache.openmeetings.web.common.tree.MyRecordingTreeProvider;
-import org.apache.openmeetings.web.common.tree.PublicRecordingTreeProvider;
import org.apache.wicket.ajax.AjaxRequestTarget;
public class RecordingsPanel extends UserPanel {
@@ -42,21 +37,10 @@ public class RecordingsPanel extends Use
public RecordingsPanel(String id) {
super(id);
- add(new FileTreePanel("tree") {
+ add(new FileTreePanel("tree", null) {
private static final long serialVersionUID = 1L;
@Override
- public void defineTrees() {
- selectedFile.setObject(new Recording());
- treesView.getList().add(new
MyRecordingTreeProvider());
- treesView.getList().add(new
PublicRecordingTreeProvider(null, null));
- for (GroupUser ou :
getBean(UserDao.class).get(getUserId()).getGroupUsers()) {
- Group o = ou.getGroup();
- treesView.getList().add(new
PublicRecordingTreeProvider(o.getId(), o.getName()));
- }
- }
-
- @Override
public void updateSizes() {
RecordingContainerData sizeData =
getBean(RecordingDao.class).getContainerData(getUserId());
if (sizeData != null) {
@@ -66,15 +50,10 @@ public class RecordingsPanel extends Use
}
@Override
- public void update(AjaxRequestTarget target, FileItem
f) {
+ protected void update(AjaxRequestTarget target,
FileItem f) {
video.update(target, (Recording)f);
info.update(target, (Recording)f);
}
-
- @Override
- public void createFolder(String name) {
- createRecordingFolder(name);
- }
});
add(video, info);
}