mirror of
https://github.com/bancika/diy-layout-creator
synced 2026-11-11 01:32:08 +10:00
upload manager work
This commit is contained in:
@@ -32,10 +32,10 @@ public enum IconLoader {
|
||||
"briefcase_into.png"), RotateCW("rotate_cw.png"), RotateCCW("rotate_ccw.png"), ElementInto("element_into.png"), Arrow(
|
||||
"arrow.png"), Cloud("cloud.png"), CloudUp("cloud_up.png"), CloudGear("cloud_gear.png"), IdCardEdit(
|
||||
"id_card_edit.png"), KeyEdit("key_edit.png"), Find("find.png"), Dashboard("dashboard.png"), DataFind(
|
||||
"data_find.png"), CloudDownload("cloud-download.png"), NavLeftBlue("nav_left_blue.png"), NavRightBlue(
|
||||
"nav_right_blue.png"), MissingImage("missing_image.png"), CloudBg("cloud_bg.png"), CloudBig("cloud_big.png"), CloudWait(
|
||||
"cloud_wait.png"), Spinning("spinning.gif"), Megaphone("megaphone.png"), Download("download.png"), Eye("eye.png"), Messages(
|
||||
"messages.png");
|
||||
"data_find.png"), CloudDownload("cloud_download.png"), CloudUpload("cloud_upload.png"), NavLeftBlue(
|
||||
"nav_left_blue.png"), NavRightBlue("nav_right_blue.png"), MissingImage("missing_image.png"), CloudBg(
|
||||
"cloud_bg.png"), CloudBig("cloud_big.png"), CloudWait("cloud_wait.png"), Spinning("spinning.gif"), Megaphone(
|
||||
"megaphone.png"), Download("download.png"), Eye("eye.png"), Messages("messages.png");
|
||||
|
||||
protected String name;
|
||||
|
||||
|
||||
|
Before Width: | Height: | Size: 717 B After Width: | Height: | Size: 717 B |
Binary file not shown.
|
After Width: | Height: | Size: 798 B |
@@ -0,0 +1,29 @@
|
||||
package org.diylc.swing;
|
||||
|
||||
import javax.swing.JFrame;
|
||||
|
||||
import org.diylc.common.ITask;
|
||||
|
||||
/**
|
||||
* Interface for secondary windows that support basic functionalities.
|
||||
*
|
||||
* @author Branislav Stojkovic
|
||||
*/
|
||||
public interface ISimpleView {
|
||||
|
||||
/**
|
||||
* Runs a task in background while showing busy cursor and a glass pane.
|
||||
*
|
||||
* @param task
|
||||
*/
|
||||
<T extends Object> void executeBackgroundTask(ITask<T> task);
|
||||
|
||||
void showMessage(String message, String title, int messageType);
|
||||
|
||||
int showConfirmDialog(String message, String title, int optionType, int messageType);
|
||||
|
||||
/**
|
||||
* @return {@link JFrame} that can be used to reference secondary dialogs and frames
|
||||
*/
|
||||
JFrame getOwnerFrame();
|
||||
}
|
||||
@@ -26,9 +26,9 @@ import org.diylc.swing.plugins.cloud.view.LoginDialog;
|
||||
import org.diylc.swing.plugins.cloud.view.UploadDialog;
|
||||
import org.diylc.swing.plugins.cloud.view.UserEditDialog;
|
||||
import org.diylc.swing.plugins.cloud.view.browser.CloudBrowserFrame;
|
||||
import org.diylc.swing.plugins.cloud.view.browser.UploadManagerFrame;
|
||||
import org.diylc.swing.plugins.file.FileFilterEnum;
|
||||
import org.diylc.swingframework.ButtonDialog;
|
||||
import org.diylc.swingframework.ProgressDialog;
|
||||
|
||||
public class CloudPlugIn implements IPlugIn, CloudListener {
|
||||
|
||||
@@ -118,6 +118,10 @@ public class CloudPlugIn implements IPlugIn, CloudListener {
|
||||
return cloudBrowser;
|
||||
}
|
||||
|
||||
public UploadManagerFrame createUploadManagerFrame() {
|
||||
return new UploadManagerFrame(swingUI, plugInPort, cloudPresenter);
|
||||
}
|
||||
|
||||
public LibraryAction getLibraryAction() {
|
||||
if (libraryAction == null) {
|
||||
libraryAction = new LibraryAction();
|
||||
@@ -455,15 +459,14 @@ public class CloudPlugIn implements IPlugIn, CloudListener {
|
||||
|
||||
public ManageProjectsAction() {
|
||||
super();
|
||||
putValue(AbstractAction.NAME, "Manage My Projects");
|
||||
putValue(AbstractAction.NAME, "Manage My Uploads");
|
||||
putValue(AbstractAction.SMALL_ICON, IconLoader.CloudGear.getIcon());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void actionPerformed(ActionEvent e) {
|
||||
ProgressDialog dialog =
|
||||
DialogFactory.getInstance().createProgressDialog("Test", new String[] {}, "Some text", false);
|
||||
dialog.setVisible(true);
|
||||
UploadManagerFrame frame = createUploadManagerFrame();
|
||||
frame.setVisible(true);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -23,7 +23,7 @@ import org.diylc.core.IView;
|
||||
import org.diylc.plugins.cloud.model.CommentEntity;
|
||||
import org.diylc.plugins.cloud.model.ProjectEntity;
|
||||
import org.diylc.plugins.cloud.presenter.CloudPresenter;
|
||||
import org.diylc.swing.plugins.cloud.view.browser.CloudBrowserFrame;
|
||||
import org.diylc.swing.ISimpleView;
|
||||
|
||||
public class CommentDialog extends JDialog {
|
||||
|
||||
@@ -44,19 +44,18 @@ public class CommentDialog extends JDialog {
|
||||
|
||||
private int lastPosition = 0;
|
||||
|
||||
private CloudBrowserFrame owner;
|
||||
private ISimpleView owner;
|
||||
|
||||
public CommentDialog(CloudBrowserFrame owner, ProjectEntity project, List<CommentEntity> comments,
|
||||
public CommentDialog(ISimpleView cloudUI, ProjectEntity project, List<CommentEntity> comments,
|
||||
CloudPresenter presenter) {
|
||||
super(owner, "Comments on " + project.getName());
|
||||
this.owner = owner;
|
||||
super(cloudUI.getOwnerFrame(), "Comments on " + project.getName());
|
||||
this.project = project;
|
||||
this.comments = comments;
|
||||
this.presenter = presenter;
|
||||
setMinimumSize(new Dimension(400, 600));
|
||||
setContentPane(getMainPanel());
|
||||
pack();
|
||||
setLocationRelativeTo(owner);
|
||||
setLocationRelativeTo(cloudUI.getOwnerFrame());
|
||||
setModal(true);
|
||||
if (!presenter.isLoggedIn()) {
|
||||
getReplyArea().setEnabled(false);
|
||||
|
||||
+14
-3
@@ -28,10 +28,13 @@ import org.diylc.images.IconLoader;
|
||||
import org.diylc.plugins.cloud.model.ProjectEntity;
|
||||
import org.diylc.plugins.cloud.presenter.CloudPresenter;
|
||||
import org.diylc.plugins.cloud.presenter.PagingProvider;
|
||||
import org.diylc.swing.ISimpleView;
|
||||
import org.diylc.swing.ISwingUI;
|
||||
import org.diylc.utils.Pair;
|
||||
|
||||
public class CloudBrowserFrame extends JFrame {
|
||||
public class CloudBrowserFrame extends JFrame implements ISimpleView {
|
||||
|
||||
private static final String TITLE = "Search The Cloud";
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@@ -52,7 +55,7 @@ public class CloudBrowserFrame extends JFrame {
|
||||
private ISwingUI swingUI;
|
||||
|
||||
public CloudBrowserFrame(ISwingUI swingUI, IPlugInPort plugInPort, CloudPresenter cloudPresenter) {
|
||||
super("Search The Cloud");
|
||||
super(TITLE);
|
||||
this.swingUI = swingUI;
|
||||
this.setIconImage(IconLoader.Cloud.getImage());
|
||||
this.setPreferredSize(new Dimension(700, 640));
|
||||
@@ -195,12 +198,13 @@ public class CloudBrowserFrame extends JFrame {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void complete(List<ProjectEntity> result) {
|
||||
public void complete(List<ProjectEntity> result) {
|
||||
getResultsScrollPane().startSearch(result);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T extends Object> void executeBackgroundTask(final ITask<T> task) {
|
||||
getGlassPane().setVisible(true);
|
||||
SwingWorker<T, Void> worker = new SwingWorker<T, Void>() {
|
||||
@@ -228,11 +232,18 @@ public class CloudBrowserFrame extends JFrame {
|
||||
worker.execute();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void showMessage(String message, String title, int messageType) {
|
||||
JOptionPane.showMessageDialog(this, message, title, messageType);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int showConfirmDialog(String message, String title, int optionType, int messageType) {
|
||||
return JOptionPane.showConfirmDialog(this, message, title, optionType, messageType);
|
||||
}
|
||||
|
||||
@Override
|
||||
public JFrame getOwnerFrame() {
|
||||
return this;
|
||||
}
|
||||
}
|
||||
|
||||
+5
-4
@@ -44,6 +44,7 @@ import org.diylc.plugins.cloud.model.CommentEntity;
|
||||
import org.diylc.plugins.cloud.model.ProjectEntity;
|
||||
import org.diylc.plugins.cloud.presenter.CloudPresenter;
|
||||
import org.diylc.plugins.cloud.presenter.PagingProvider;
|
||||
import org.diylc.swing.ISimpleView;
|
||||
import org.diylc.swing.ISwingUI;
|
||||
import org.diylc.swing.gui.DialogFactory;
|
||||
import org.diylc.swing.plugins.cloud.view.CommentDialog;
|
||||
@@ -65,7 +66,7 @@ public class ResultsScrollPanel extends JScrollPane {
|
||||
private JLabel topLabel;
|
||||
|
||||
private ISwingUI mainUI;
|
||||
private CloudBrowserFrame cloudUI;
|
||||
private ISimpleView cloudUI;
|
||||
|
||||
private IPlugInPort plugInPort;
|
||||
|
||||
@@ -80,7 +81,7 @@ public class ResultsScrollPanel extends JScrollPane {
|
||||
|
||||
private Icon spinnerIcon = IconLoader.Spinning.getIcon();
|
||||
|
||||
public ResultsScrollPanel(ISwingUI mainUI, CloudBrowserFrame cloudUI, IPlugInPort plugInPort,
|
||||
public ResultsScrollPanel(ISwingUI mainUI, ISimpleView cloudUI, IPlugInPort plugInPort,
|
||||
PagingProvider provider, CloudPresenter cloudPresenter) {
|
||||
super();
|
||||
this.mainUI = mainUI;
|
||||
@@ -157,7 +158,7 @@ public class ResultsScrollPanel extends JScrollPane {
|
||||
getViewport().setViewPosition(old);
|
||||
}
|
||||
});
|
||||
if (provider.hasMoreData()) {
|
||||
if (provider != null && provider.hasMoreData()) {
|
||||
getLoadMoreLabel().setText("Querying the cloud for more results...");
|
||||
getLoadMoreLabel().setIcon(spinnerIcon);
|
||||
} else {
|
||||
@@ -387,7 +388,7 @@ public class ResultsScrollPanel extends JScrollPane {
|
||||
@Override
|
||||
public void paint(Graphics g) {
|
||||
super.paint(g);
|
||||
if (armed && provider.hasMoreData()) {
|
||||
if (armed && provider != null && provider.hasMoreData()) {
|
||||
// disarm immediately so we don't trigger successive requests to the provider
|
||||
armed = false;
|
||||
SwingWorker<List<ProjectEntity>, Void> worker = new SwingWorker<List<ProjectEntity>, Void>() {
|
||||
|
||||
+124
@@ -0,0 +1,124 @@
|
||||
package org.diylc.swing.plugins.cloud.view.browser;
|
||||
|
||||
import java.awt.Dimension;
|
||||
import java.util.List;
|
||||
import java.util.concurrent.ExecutionException;
|
||||
|
||||
import javax.swing.JFrame;
|
||||
import javax.swing.JOptionPane;
|
||||
import javax.swing.SwingWorker;
|
||||
|
||||
import org.apache.log4j.Logger;
|
||||
import org.diylc.common.IPlugInPort;
|
||||
import org.diylc.common.ITask;
|
||||
import org.diylc.core.IView;
|
||||
import org.diylc.images.IconLoader;
|
||||
import org.diylc.plugins.cloud.model.ProjectEntity;
|
||||
import org.diylc.plugins.cloud.presenter.CloudPresenter;
|
||||
import org.diylc.swing.ISimpleView;
|
||||
import org.diylc.swing.ISwingUI;
|
||||
|
||||
public class UploadManagerFrame extends JFrame implements ISimpleView {
|
||||
|
||||
private static final String TITLE = "Manage My Uploads";
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
private static final Logger LOG = Logger.getLogger(UploadManagerFrame.class);
|
||||
|
||||
private ResultsScrollPanel resultsScrollPane;
|
||||
|
||||
private IPlugInPort plugInPort;
|
||||
private CloudPresenter cloudPresenter;
|
||||
|
||||
private ISwingUI swingUI;
|
||||
|
||||
public UploadManagerFrame(ISwingUI swingUI, IPlugInPort plugInPort, CloudPresenter cloudPresenter) {
|
||||
super(TITLE);
|
||||
this.swingUI = swingUI;
|
||||
this.setIconImage(IconLoader.CloudGear.getImage());
|
||||
this.setPreferredSize(new Dimension(700, 640));
|
||||
this.plugInPort = plugInPort;
|
||||
this.cloudPresenter = cloudPresenter;
|
||||
|
||||
setContentPane(getResultsScrollPane());
|
||||
this.pack();
|
||||
this.setLocationRelativeTo(swingUI.getOwnerFrame());
|
||||
this.setGlassPane(SimpleCloudGlassPane.GLASS_PANE);
|
||||
|
||||
search();
|
||||
}
|
||||
|
||||
private ResultsScrollPanel getResultsScrollPane() {
|
||||
if (resultsScrollPane == null) {
|
||||
resultsScrollPane = new ResultsScrollPanel(swingUI, this, plugInPort, null, cloudPresenter);
|
||||
}
|
||||
return resultsScrollPane;
|
||||
}
|
||||
|
||||
private void search() {
|
||||
getResultsScrollPane().clearPrevious();
|
||||
executeBackgroundTask(new ITask<List<ProjectEntity>>() {
|
||||
|
||||
@Override
|
||||
public List<ProjectEntity> doInBackground() throws Exception {
|
||||
return cloudPresenter.fetchUserUploads();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void failed(Exception e) {
|
||||
showMessage("Search failed! Detailed message is in the logs. Please report to the author.", "Search Failed",
|
||||
IView.ERROR_MESSAGE);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void complete(List<ProjectEntity> result) {
|
||||
setTitle(TITLE + " - " + result.size() + " Uploads Found");
|
||||
getResultsScrollPane().startSearch(result);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T extends Object> void executeBackgroundTask(final ITask<T> task) {
|
||||
getGlassPane().setVisible(true);
|
||||
SwingWorker<T, Void> worker = new SwingWorker<T, Void>() {
|
||||
|
||||
@Override
|
||||
protected T doInBackground() throws Exception {
|
||||
return task.doInBackground();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void done() {
|
||||
getGlassPane().setVisible(false);
|
||||
try {
|
||||
T result = get();
|
||||
task.complete(result);
|
||||
} catch (ExecutionException e) {
|
||||
LOG.error("Background task execution failed", e);
|
||||
task.failed(e);
|
||||
} catch (InterruptedException e) {
|
||||
LOG.error("Background task execution interrupted", e);
|
||||
task.failed(e);
|
||||
}
|
||||
}
|
||||
};
|
||||
worker.execute();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void showMessage(String message, String title, int messageType) {
|
||||
JOptionPane.showMessageDialog(this, message, title, messageType);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int showConfirmDialog(String message, String title, int optionType, int messageType) {
|
||||
return JOptionPane.showConfirmDialog(this, message, title, optionType, messageType);
|
||||
}
|
||||
|
||||
@Override
|
||||
public JFrame getOwnerFrame() {
|
||||
return this;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user