X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=src%2Fde%2Ftodesbaum%2Fjsite%2Fgui%2FProjectInsertPage.java;h=08d63f673442dbe0b3bd69b893ce95aeaddcb234;hb=8bc7a8f2372639a9fbeea34f9cbee9697f34ba3f;hp=86305aa0604339ca59b8b9f7fed9e22c5f186b5a;hpb=b4dc22f0312554d7724d1b7ebb2599afe8e798ac;p=jSite.git diff --git a/src/de/todesbaum/jsite/gui/ProjectInsertPage.java b/src/de/todesbaum/jsite/gui/ProjectInsertPage.java index 86305aa..08d63f6 100644 --- a/src/de/todesbaum/jsite/gui/ProjectInsertPage.java +++ b/src/de/todesbaum/jsite/gui/ProjectInsertPage.java @@ -1,6 +1,5 @@ /* - * jSite - a tool for uploading websites into Freenet - * Copyright (C) 2006 David Roden + * jSite - ProjectInsertPage.java - Copyright © 2006–2012 David Roden * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -48,12 +47,16 @@ import javax.swing.JProgressBar; import javax.swing.JTextField; import javax.swing.SwingUtilities; +import de.todesbaum.jsite.application.AbortedException; import de.todesbaum.jsite.application.Freenet7Interface; import de.todesbaum.jsite.application.InsertListener; import de.todesbaum.jsite.application.Project; import de.todesbaum.jsite.application.ProjectInserter; import de.todesbaum.jsite.i18n.I18n; import de.todesbaum.jsite.i18n.I18nContainer; +import de.todesbaum.util.freenet.fcp2.ClientPutDir.ManifestPutter; +import de.todesbaum.util.freenet.fcp2.PriorityClass; +import de.todesbaum.util.io.StreamCopier.ProgressListener; import de.todesbaum.util.swing.TWizard; import de.todesbaum.util.swing.TWizardPage; @@ -108,6 +111,7 @@ public class ProjectInsertPage extends TWizardPage implements InsertListener, Cl setDescription(I18n.getMessage("jsite.insert.description")); I18nContainer.getInstance().registerRunnable(new Runnable() { + @Override public void run() { setHeading(I18n.getMessage("jsite.insert.heading")); setDescription(I18n.getMessage("jsite.insert.description")); @@ -123,6 +127,7 @@ public class ProjectInsertPage extends TWizardPage implements InsertListener, Cl private void createActions() { copyURIAction = new AbstractAction(I18n.getMessage("jsite.project.action.copy-uri")) { + @Override @SuppressWarnings("synthetic-access") public void actionPerformed(ActionEvent actionEvent) { actionCopyURI(); @@ -134,6 +139,7 @@ public class ProjectInsertPage extends TWizardPage implements InsertListener, Cl I18nContainer.getInstance().registerRunnable(new Runnable() { + @Override @SuppressWarnings("synthetic-access") public void run() { copyURIAction.putValue(Action.NAME, I18n.getMessage("jsite.project.action.copy-uri")); @@ -182,6 +188,7 @@ public class ProjectInsertPage extends TWizardPage implements InsertListener, Cl I18nContainer.getInstance().registerRunnable(new Runnable() { + @Override @SuppressWarnings("synthetic-access") public void run() { projectInformationLabel.setText("" + I18n.getMessage("jsite.insert.project-information") + ""); @@ -206,7 +213,7 @@ public class ProjectInsertPage extends TWizardPage implements InsertListener, Cl public void pageAdded(TWizard wizard) { this.wizard.setPreviousName(I18n.getMessage("jsite.wizard.previous")); this.wizard.setPreviousEnabled(false); - this.wizard.setNextName(I18n.getMessage("jsite.wizard.next")); + this.wizard.setNextName(I18n.getMessage("jsite.general.cancel")); this.wizard.setQuitName(I18n.getMessage("jsite.wizard.quit")); } @@ -215,12 +222,33 @@ public class ProjectInsertPage extends TWizardPage implements InsertListener, Cl */ public void startInsert() { running = true; - wizard.setNextEnabled(false); copyURIAction.setEnabled(false); progressBar.setValue(0); progressBar.setString(I18n.getMessage("jsite.insert.starting")); progressBar.setFont(progressBar.getFont().deriveFont(Font.PLAIN)); - projectInserter.start(); + projectInserter.start(new ProgressListener() { + + @Override + public void onProgress(final long copied, final long length) { + SwingUtilities.invokeLater(new Runnable() { + + /** + * {@inheritDoc} + */ + @Override + @SuppressWarnings("synthetic-access") + public void run() { + int divisor = 1; + while (((copied / divisor) > Integer.MAX_VALUE) || ((length / divisor) > Integer.MAX_VALUE)) { + divisor *= 10; + } + progressBar.setMaximum((int) (length / divisor)); + progressBar.setValue((int) (copied / divisor)); + progressBar.setString("Uploaded: " + copied + " / " + length); + } + }); + } + }); } /** @@ -253,6 +281,7 @@ public class ProjectInsertPage extends TWizardPage implements InsertListener, Cl projectInserter.setProject(project); SwingUtilities.invokeLater(new Runnable() { + @Override @SuppressWarnings("synthetic-access") public void run() { requestURITextField.setText(project.getFinalRequestURI(1)); @@ -292,6 +321,38 @@ public class ProjectInsertPage extends TWizardPage implements InsertListener, Cl return uriCopied; } + /** + * Sets whether to use the “early encode“ flag for the insert. + * + * @param useEarlyEncode + * {@code true} to set the “early encode” flag for the insert, + * {@code false} otherwise + */ + public void setUseEarlyEncode(boolean useEarlyEncode) { + projectInserter.setUseEarlyEncode(useEarlyEncode); + } + + /** + * Sets the insert priority. + * + * @param priority + * The insert priority + */ + public void setPriority(PriorityClass priority) { + projectInserter.setPriority(priority); + } + + /** + * Sets the manifest putter to use for the insert. + * + * @see ProjectInserter#setManifestPutter(ManifestPutter) + * @param manifestPutter + * The manifest putter + */ + public void setManifestPutter(ManifestPutter manifestPutter) { + projectInserter.setManifestPutter(manifestPutter); + } + // // INTERFACE InsertListener // @@ -299,10 +360,12 @@ public class ProjectInsertPage extends TWizardPage implements InsertListener, Cl /** * {@inheritDoc} */ + @Override public void projectInsertStarted(final Project project) { SwingUtilities.invokeLater(new Runnable() { + @Override @SuppressWarnings("synthetic-access") public void run() { startTimeLabel.setText(DateFormat.getDateTimeInstance().format(new Date())); @@ -313,16 +376,28 @@ public class ProjectInsertPage extends TWizardPage implements InsertListener, Cl /** * {@inheritDoc} */ + @Override public void projectUploadFinished(Project project) { startTime = System.currentTimeMillis(); + SwingUtilities.invokeLater(new Runnable() { + + @Override + @SuppressWarnings("synthetic-access") + public void run() { + progressBar.setString(I18n.getMessage("jsite.insert.starting")); + progressBar.setValue(0); + } + }); } /** * {@inheritDoc} */ + @Override public void projectURIGenerated(Project project, final String uri) { SwingUtilities.invokeLater(new Runnable() { + @Override @SuppressWarnings("synthetic-access") public void run() { copyURIAction.setEnabled(true); @@ -353,12 +428,17 @@ public class ProjectInsertPage extends TWizardPage implements InsertListener, Cl /** * {@inheritDoc} */ + @Override public void projectInsertProgress(Project project, final int succeeded, final int failed, final int fatal, final int total, final boolean finalized) { insertedBlocks = succeeded; SwingUtilities.invokeLater(new Runnable() { + @Override @SuppressWarnings("synthetic-access") public void run() { + if (total == 0) { + return; + } progressBar.setMaximum(total); progressBar.setValue(succeeded + failed + fatal); int progress = (succeeded + failed + fatal) * 100 / total; @@ -379,6 +459,7 @@ public class ProjectInsertPage extends TWizardPage implements InsertListener, Cl /** * {@inheritDoc} */ + @Override public void projectInsertFinished(Project project, boolean success, Throwable cause) { running = false; if (success) { @@ -389,17 +470,23 @@ public class ProjectInsertPage extends TWizardPage implements InsertListener, Cl } } else { if (cause == null) { - JOptionPane.showMessageDialog(this, I18n.getMessage("jsite.insert.insert-failed"), null, JOptionPane.ERROR_MESSAGE); + JOptionPane.showMessageDialog(this, I18n.getMessage("jsite.insert.insert-failed"), I18n.getMessage("jsite.insert.insert-failed.title"), JOptionPane.ERROR_MESSAGE); } else { - JOptionPane.showMessageDialog(this, MessageFormat.format(I18n.getMessage("jsite.insert.insert-failed-with-cause"), cause.getMessage()), null, JOptionPane.ERROR_MESSAGE); + if (cause instanceof AbortedException) { + JOptionPane.showMessageDialog(this, I18n.getMessage("jsite.insert.insert-aborted"), I18n.getMessage("jsite.insert.insert-aborted.title"), JOptionPane.INFORMATION_MESSAGE); + } else { + JOptionPane.showMessageDialog(this, MessageFormat.format(I18n.getMessage("jsite.insert.insert-failed-with-cause"), cause.getMessage()), I18n.getMessage("jsite.insert.insert-failed.title"), JOptionPane.ERROR_MESSAGE); + } } } SwingUtilities.invokeLater(new Runnable() { + @Override @SuppressWarnings("synthetic-access") public void run() { progressBar.setValue(progressBar.getMaximum()); progressBar.setString(I18n.getMessage("jsite.insert.done") + " (" + getTransferRate() + " " + I18n.getMessage("jsite.insert.k-per-s") + ")"); + wizard.setNextName(I18n.getMessage("jsite.wizard.next")); wizard.setNextEnabled(true); wizard.setQuitEnabled(true); } @@ -429,7 +516,7 @@ public class ProjectInsertPage extends TWizardPage implements InsertListener, Cl * The number of fractional digits * @return The formatted number */ - private String formatNumber(double number, int digits) { + private static String formatNumber(double number, int digits) { int multiplier = (int) Math.pow(10, digits); String formattedNumber = String.valueOf((int) (number * multiplier) / (double) multiplier); if (formattedNumber.indexOf('.') == -1) { @@ -457,6 +544,7 @@ public class ProjectInsertPage extends TWizardPage implements InsertListener, Cl /** * {@inheritDoc} */ + @Override public void lostOwnership(Clipboard clipboard, Transferable contents) { /* ignore. */ }