You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@chemistry.apache.org by fm...@apache.org on 2016/02/02 16:15:20 UTC
svn commit: r1728146 -
/chemistry/opencmis/trunk/chemistry-opencmis-workbench/chemistry-opencmis-workbench/src/main/java/org/apache/chemistry/opencmis/workbench/FolderTable.java
Author: fmui
Date: Tue Feb 2 15:15:20 2016
New Revision: 1728146
URL: http://svn.apache.org/viewvc?rev=1728146&view=rev
Log:
Workbench: more popup menu items for the folder table
Modified:
chemistry/opencmis/trunk/chemistry-opencmis-workbench/chemistry-opencmis-workbench/src/main/java/org/apache/chemistry/opencmis/workbench/FolderTable.java
Modified: chemistry/opencmis/trunk/chemistry-opencmis-workbench/chemistry-opencmis-workbench/src/main/java/org/apache/chemistry/opencmis/workbench/FolderTable.java
URL: http://svn.apache.org/viewvc/chemistry/opencmis/trunk/chemistry-opencmis-workbench/chemistry-opencmis-workbench/src/main/java/org/apache/chemistry/opencmis/workbench/FolderTable.java?rev=1728146&r1=1728145&r2=1728146&view=diff
==============================================================================
--- chemistry/opencmis/trunk/chemistry-opencmis-workbench/chemistry-opencmis-workbench/src/main/java/org/apache/chemistry/opencmis/workbench/FolderTable.java (original)
+++ chemistry/opencmis/trunk/chemistry-opencmis-workbench/chemistry-opencmis-workbench/src/main/java/org/apache/chemistry/opencmis/workbench/FolderTable.java Tue Feb 2 15:15:20 2016
@@ -41,6 +41,7 @@ import javax.swing.Icon;
import javax.swing.ImageIcon;
import javax.swing.JComponent;
import javax.swing.JMenuItem;
+import javax.swing.JOptionPane;
import javax.swing.JPopupMenu;
import javax.swing.JTable;
import javax.swing.ListSelectionModel;
@@ -54,7 +55,9 @@ import javax.swing.table.TableColumn;
import org.apache.chemistry.opencmis.client.api.CmisObject;
import org.apache.chemistry.opencmis.client.api.Document;
import org.apache.chemistry.opencmis.client.api.Folder;
+import org.apache.chemistry.opencmis.commons.enums.Action;
import org.apache.chemistry.opencmis.commons.enums.BaseTypeId;
+import org.apache.chemistry.opencmis.commons.enums.UnfileObject;
import org.apache.chemistry.opencmis.workbench.icons.CheckedOutIcon;
import org.apache.chemistry.opencmis.workbench.icons.DocumentIcon;
import org.apache.chemistry.opencmis.workbench.icons.FolderIcon;
@@ -107,16 +110,83 @@ public class FolderTable extends JTable
setRowHeight((int) (getFontMetrics(getFont()).getHeight() * 1.1));
final JPopupMenu popup = new JPopupMenu();
- JMenuItem menuItem = new JMenuItem("Copy to clipboard");
- popup.add(menuItem);
- menuItem.addActionListener(new ActionListener() {
+ // popup menu: clipboard
+ JMenuItem clipboardItem = new JMenuItem("Copy table to clipboard");
+ popup.add(clipboardItem);
+
+ clipboardItem.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
ClientHelper.copyTableToClipboard(FolderTable.this);
}
});
+ popup.addSeparator();
+
+ // popup menu: delete
+ final JMenuItem deleteItem = new JMenuItem("Delete");
+ deleteItem.setEnabled(false);
+ popup.add(deleteItem);
+
+ deleteItem.addActionListener(new ActionListener() {
+ @Override
+ public void actionPerformed(ActionEvent e) {
+ if (model.getCurrentObject() != null) {
+ int answer = JOptionPane.showConfirmDialog(FolderTable.this, "Do you really want to delete '"
+ + model.getCurrentObject().getName() + "'?", "Delete", JOptionPane.YES_NO_OPTION,
+ JOptionPane.WARNING_MESSAGE);
+
+ if (answer == JOptionPane.YES_OPTION) {
+ try {
+ setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR));
+ if (model.getCurrentObject() instanceof Folder) {
+ List<String> ids = ((Folder) model.getCurrentObject()).deleteTree(true,
+ UnfileObject.DELETE, true);
+
+ if (ids != null && !ids.isEmpty()) {
+ StringBuilder sb = new StringBuilder(128);
+
+ sb.append("Delete tree failed! At least the following objects could not be deleted:\n");
+
+ for (String id : ids) {
+ sb.append('\n');
+ sb.append(id);
+ }
+
+ JOptionPane.showMessageDialog(FolderTable.this, sb.toString(), "Delete Tree",
+ JOptionPane.ERROR_MESSAGE);
+ }
+ } else {
+ model.getCurrentObject().delete();
+ }
+
+ model.reloadFolder();
+ } catch (Exception ex) {
+ ClientHelper.showError(FolderTable.this, ex);
+ return;
+ } finally {
+ setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR));
+ }
+ }
+ }
+ }
+ });
+
+ // popup menu: download
+ final JMenuItem downloadItem = new JMenuItem("Download");
+ downloadItem.setEnabled(false);
+ popup.add(downloadItem);
+
+ downloadItem.addActionListener(new ActionListener() {
+ @Override
+ public void actionPerformed(ActionEvent e) {
+ if (model.getCurrentObject() != null) {
+ ClientHelper.download(FolderTable.this, model.getCurrentObject(), null);
+ }
+ }
+ });
+
getSelectionModel().addListSelectionListener(new ListSelectionListener() {
@Override
public void valueChanged(ListSelectionEvent e) {
@@ -131,6 +201,17 @@ public class FolderTable extends JTable
try {
setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR));
model.loadObject(id);
+
+ // enable or disable popup menu items
+ if (model.getCurrentObject() != null && model.getCurrentObject().getAllowableActions() != null) {
+ CmisObject object = model.getCurrentObject();
+ deleteItem.setEnabled(object.hasAllowableAction(Action.CAN_DELETE_OBJECT)
+ || object.hasAllowableAction(Action.CAN_DELETE_TREE));
+ downloadItem.setEnabled(object.hasAllowableAction(Action.CAN_GET_CONTENT_STREAM));
+ } else {
+ deleteItem.setEnabled(false);
+ downloadItem.setEnabled(false);
+ }
} catch (Exception ex) {
ClientHelper.showError(null, ex);
return;