Revision 1763
- Date:
- 2007/10/06 12:47:06
- Files:
-
- /branches/Branch-To-Release-1_4-Neu/src/net/sourceforge/cridmanager/Utils.java (Diff) (Checkout)
- /branches/Branch-To-Release-1_4-Neu/src/net/sourceforge/cridmanager/cridmanager.properties (Diff) (Checkout)
- /branches/Branch-To-Release-1_4-Neu/src/net/sourceforge/cridmanager/worker/AbstractWorker.java (Diff) (Checkout)
- /branches/Branch-To-Release-1_4-Neu/src/net/sourceforge/cridmanager/worker/IWorker.java (Diff) (Checkout)
- /branches/Branch-To-Release-1_4-Neu/src/net/sourceforge/cridmanager/worker/SingleCridWithSizeWorker.java (Diff) (Checkout)
- /branches/Branch-To-Release-1_4-Neu/src/net/sourceforge/cridmanager/worker/WorkerCopyFile.java (Diff) (Checkout)
- /branches/Branch-To-Release-1_4-Neu/src/net/sourceforge/cridmanager/worker/WorkerJoinRecording.java (Diff) (Checkout)
Legend:
- Added
- Removed
- Modified
-
branches/Branch-To-Release-1_4-Neu/src/net/sourceforge/cridmanager/cridmanager.properties
106 106 # Anzahl Worker parallel 107 107 global.workers.parallel=1 108 108 109 # Worker zeigt Byte-Fortschritt an 110 global.workers.byteprogress=true 111 112 # Meldung für den Byte-Fortschritt 113 global.workers.bytemessage= (%0% von %1%) 114 115 # Worker zeigt Geschwindigkeit an 116 global.workers.speed=true 117 118 # Meldung für die Geschwindigkeit 119 global.workers.speedmessage=%0%/s 120 121 # Worker zeigt Abschätzung der benötigten Zeit 122 global.workers.estimatedtime=true 123 124 # Meldung für die abgeschätzte Zeit 125 global.workers.estimationmessage= (%0% - noch %1%) 126 109 127 # Unterdrücken von Meldungen (alles auf AUS) 110 128 suppress.newboxwizard.welcome=false 111 129 … … 194 212 option.typ.global.window.height=Text 195 213 option.typ.global.window.width=Text 196 214 option.typ.global.workers.parallel=Text 215 option.typ.global.workers.estimatedtime=Check 216 option.typ.global.workers.estimationmessage=Text 217 option.typ.global.workers.byteprogress=Check 218 option.typ.global.workers.bytemessage=Text 197 219 option.typ.suppress.messages.newbox_welcome=Check 198 220 option.typ.tree.tooltip.description_length=Text 199 221 option.typ.tree.tooltip.description=Check -
branches/Branch-To-Release-1_4-Neu/src/net/sourceforge/cridmanager/Utils.java
32 32 * Logger for this class 33 33 */ 34 34 private static final Logger logger = Logger.getLogger(Utils.class); 35 35 36 // deutschsprachiges Datumsformat 36 37 private static SimpleDateFormat SDF; 38 37 39 private static File userHome = null; 40 38 41 private static ISettings settings = null; 39 42 40 43 public static Icon getIcon(String path) { … … 50 53 return returnIcon; 51 54 } else { 52 55 if (logger.isInfoEnabled()) { 53 logger.info("getIcon(String) - Icon nicht gefunden - path=" + path); //$NON-NLS-1$ 56 logger 57 .info("getIcon(String) - Icon nicht gefunden - path=" + path); //$NON-NLS-1$ 54 58 } 55 59 if (logger.isDebugEnabled()) { 56 60 logger.debug("getIcon(String) - end"); //$NON-NLS-1$ … … 75 79 } 76 80 77 81 /** 78 * Liefert das Verzeichnis, in dem die Anwendung ihre benutzerbezogenen Daten abspeichert. Dieses 79 * ist standardmäßig ${user.home}/cridmanager. Wenn das Verzeichnis nicht existiert, wird es neu 80 * angelegt. Kann es nicht angelegt werden, so wird ${user.home} zurückgeliefert. 82 * Liefert das Verzeichnis, in dem die Anwendung ihre benutzerbezogenen 83 * Daten abspeichert. Dieses ist standardmäßig ${user.home}/cridmanager. 84 * Wenn das Verzeichnis nicht existiert, wird es neu angelegt. Kann es nicht 85 * angelegt werden, so wird ${user.home} zurückgeliefert. 81 86 * 82 87 * @return Das aktuelle Benutzerverzeichnis 83 88 * @see System#getProperty(java.lang.String) … … 129 134 } 130 135 131 136 /** 132 * Liefert ein File-Objekt für ein Objekt (Verzeichnis oder Datei), das sich an einem relativen 133 * Pfad vom Benutzerverzeichnis aus befindet. 137 * Liefert ein File-Objekt für ein Objekt (Verzeichnis oder Datei), das sich 138 * an einem relativen Pfad vom Benutzerverzeichnis aus befindet. 134 139 * 135 * @param relpath Relativer Pfad zum Objekt, ausgehend von dem Benutzerverzeichnis. 140 * @param relpath 141 * Relativer Pfad zum Objekt, ausgehend von dem 142 * Benutzerverzeichnis. 136 143 * @return File-Objekt für das gewünschte Objekt. 137 144 */ 138 145 public static File getUserHome(String relpath) { … … 148 155 } 149 156 150 157 /** 151 * Liefert ein formatiertes Datum. Sofern der Benutzer in seinen Properties ein Datumsformat 152 * definiert hat, wird dieses benutzt. Ansonsten wird ein Format benutzt, das in der 153 * Lokalisierungsdatei der eingestellten Locale steht. Ist auch dort nichts definiert, so wird der 154 * Standard der eingestellten Locale verwendet. 158 * Liefert ein formatiertes Datum. Sofern der Benutzer in seinen Properties 159 * ein Datumsformat definiert hat, wird dieses benutzt. Ansonsten wird ein 160 * Format benutzt, das in der Lokalisierungsdatei der eingestellten Locale 161 * steht. Ist auch dort nichts definiert, so wird der Standard der 162 * eingestellten Locale verwendet. 155 163 * 156 * @param date Das zu formatierende Datum 164 * @param date 165 * Das zu formatierende Datum 157 166 * @param dateProp 158 167 * @return Eine String mit dem formatierten Datum. 159 168 * @see Utils#DATEFORMAT … … 167 176 // hole einen DateFormatter für die Default-Locale 168 177 SDF = new SimpleDateFormat(); 169 178 // schaue nach einem Pattern, das der Benutzer bevorzugt 170 String pattern = ServiceProvider.instance().getSettings().read(dateProp, ""); //$NON-NLS-1$ 179 String pattern = ServiceProvider.instance().getSettings().read( 180 dateProp, ""); //$NON-NLS-1$ 171 181 // falls nichts vom Benutzer, dann in der Lokalisierung 172 182 if (pattern.length() == 0) { 173 183 pattern = Messages.getString("Utils.DatePattern"); //$NON-NLS-1$ … … 206 216 // hole einen DateFormatter für die Default-Locale 207 217 SDF = new SimpleDateFormat(); 208 218 // schaue nach einem Pattern, das der Benutzer bevorzugt 209 String pattern = ServiceProvider.instance().getSettings().read(Utils.DATEFORMAT, ""); //$NON-NLS-1$ 219 String pattern = ServiceProvider.instance().getSettings().read( 220 Utils.DATEFORMAT, ""); //$NON-NLS-1$ 210 221 // falls nichts vom Benutzer, dann in der Lokalisierung 211 222 if (pattern.length() == 0) { 212 223 pattern = Messages.getString("Utils.DatePattern"); //$NON-NLS-1$ … … 221 232 } 222 233 223 234 /** 224 * Extrahiert aus einer Exception den Text des Stacktraces und gibt ihn zurueck 235 * Extrahiert aus einer Exception den Text des Stacktraces und gibt ihn 236 * zurueck 225 237 * 226 * @param e Exception, dessen Stacktrce extrahiert werden soll 238 * @param e 239 * Exception, dessen Stacktrce extrahiert werden soll 227 240 * @return Text des Stacktraces 228 241 */ 229 242 public static String getStacktrace(Throwable e) { … … 241 254 } 242 255 243 256 /** 244 * Diese Methode fuehrt ein <code>trim()</code> auf den uebergebenen String aus. Wenn der String 245 * <code>null</code> ist, wird ein leerer String zurueckgegeben. 257 * Diese Methode fuehrt ein <code>trim()</code> auf den uebergebenen 258 * String aus. Wenn der String <code>null</code> ist, wird ein leerer 259 * String zurueckgegeben. 246 260 * 247 * @param aString zu trimmender String 248 * @return getrimmter String oder bei <code>null</code> als Uebergabewert ein leeren String 261 * @param aString 262 * zu trimmender String 263 * @return getrimmter String oder bei <code>null</code> als Uebergabewert 264 * ein leeren String 249 265 */ 250 266 public static String trimNull(String aString) { 251 267 if (logger.isDebugEnabled()) { … … 259 275 } 260 276 261 277 /** 262 * Bricht einen String mit <BR />-Tags so um, dass die angegebene Zeilenlänge nicht 263 * überschritten wird. 278 * Bricht einen String mit <BR />-Tags so um, dass die angegebene 279 * Zeilenlänge nicht überschritten wird. 264 280 * 265 * @param text Der Text 266 * @param len Die maximale Zeilenlänge 281 * @param text 282 * Der Text 283 * @param len 284 * Die maximale Zeilenlänge 267 285 * @return Die formatierte Zeichenkette 268 286 */ 269 287 public static String formatStringHtml(String text, int len) { … … 299 317 } 300 318 301 319 /** 302 * Einfache Ersetzung von variablen Inhalten in einen String. Es werden keine weiteren 303 * Formatierungen angeboten, diese müssen bereits auf den einzusetzenden Daten ausgeführt worden 304 * sein. <br> 305 * Im übergebenen String werden Vorkommen des Musters <code>%nn%</code> gesucht und durch den 306 * nn-ten Eintrag im <code>data</code> -Array ersetzt (also <code>%0% %1%</code> usw.), wobei 307 * bei dem Objekt die <code>toString()</code> -Methode aufgerufen wird. 320 * Einfache Ersetzung von variablen Inhalten in einen String. Es werden 321 * keine weiteren Formatierungen angeboten, diese müssen bereits auf den 322 * einzusetzenden Daten ausgeführt worden sein. <br> 323 * Im übergebenen String werden Vorkommen des Musters <code>%nn%</code> 324 * gesucht und durch den nn-ten Eintrag im <code>data</code> -Array 325 * ersetzt (also <code>%0% %1%</code> usw.), wobei bei dem Objekt die 326 * <code>toString()</code> -Methode aufgerufen wird. 308 327 * 309 * @param string String mit Ersetzungsmustern 310 * @param data Array von Ersetzungstexten 328 * @param string 329 * String mit Ersetzungsmustern 330 * @param data 331 * Array von Ersetzungstexten 311 332 * @return Der fertige String 312 333 */ 313 334 public static String format(String string, Object[] data) { … … 335 356 } 336 357 337 358 /** 338 * Formatiert eine Dateigröße in einem Benutzer-lesbaren Format. Dabei wird eine sinnvolle 339 * Darstellung in B, KB, MB oder GB gewählt, wobei ab 1000 Einheiten auf die nächstgrößere 340 * Darstellung gewechselt wird. Also 999 -> 999 B; 1000 -> 0,98 KB 359 * Formatiert eine Dateigröße in einem Benutzer-lesbaren Format. Dabei wird 360 * eine sinnvolle Darstellung in B, KB, MB oder GB gewählt, wobei ab 1000 361 * Einheiten auf die nächstgrößere Darstellung gewechselt wird. Also 999 -> 362 * 999 B; 1000 -> 0,98 KB 341 363 * 342 364 * @param size 343 365 * @return 344 366 */ 345 367 private static String[] einheiten = new String[] { " GB", " MB", " KB", //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ 346 " B" }; //$NON-NLS-1$ 347 private static long[] divider = new long[] { 1024L * 1024L * 1024L, 1024L * 1024L, 1024L, 1L }; 348 private static long[] border = new long[] { 1000L * 1024L * 1024L, 1000L * 1024L, 1000L, 0L }; 368 " B" }; //$NON-NLS-1$ 349 369 370 private static long[] divider = new long[] { 1024L * 1024L * 1024L, 371 1024L * 1024L, 1024L, 1L }; 372 373 private static long[] border = new long[] { 1000L * 1024L * 1024L, 374 1000L * 1024L, 1000L, 0L }; 375 350 376 public static String formatFilesize(long size) { 351 377 if (logger.isDebugEnabled()) { 352 378 logger.debug("formatFilesize(long) - start"); //$NON-NLS-1$ … … 355 381 for (int i = 0; i < einheiten.length; i++) { 356 382 if (size >= border[i]) { 357 383 double part = (double) size / (double) divider[i]; 358 result = Double.toString(Math.round(part * 100) / 100.0) + einheiten[i]; 384 String number = Double.toString(Math.round(part * 100) / 100.0); 385 if (number.indexOf('.') < 0) { 386 number += ".00"; //$NON-NLS-1$ 387 } else 388 while (number.length() - number.indexOf('.') < 3) { 389 number += "0"; //$NON-NLS-1$ 390 } 391 result = number + einheiten[i]; 359 392 break; 360 393 } 361 394 } … … 365 398 return result; 366 399 } 367 400 401 public static String formatTime(long seconds) { 402 long hours = seconds / (60 * 60); 403 long mins = (seconds / 60) % 60; 404 long secs = seconds % 60; 405 String sHours = getNullPaddedNumber(hours); 406 String sMins = getNullPaddedNumber(mins); 407 String sSecs = getNullPaddedNumber(secs); 408 String result = format( 409 "%0%:%1%:%2%", new Object[] { sHours, sMins, sSecs }); //$NON-NLS-1$ 410 return result; 411 } 412 413 private static String getNullPaddedNumber(long hours) { 414 String result = "00" + Long.toString(hours); //$NON-NLS-1$ 415 result = result.substring(result.length() - 2); 416 return result; 417 } 418 368 419 // [#1155469] kein Zusammenfuegen moeglich 369 420 /** 370 421 * @param string … … 406 457 } 407 458 408 459 /** 409 * Erstellt einen legalen Dateinamen mit Datum, sofern die Property APPEND_AUTO_DATE gesetzt ist. 460 * Erstellt einen legalen Dateinamen mit Datum, sofern die Property 461 * APPEND_AUTO_DATE gesetzt ist. 410 462 * 411 463 * @param name 412 464 * @param datum 413 465 * @return 414 466 * @see ISettings.APPEND_AUTO_DATE 415 467 */ 416 public static String legalFilenameWithDate(String name, Date datum, boolean noFiletype) { 468 public static String legalFilenameWithDate(String name, Date datum, 469 boolean noFiletype) { 417 470 if (logger.isDebugEnabled()) { 418 logger.debug("legalFilenameWithDate(String, Date, boolean) - start"); //$NON-NLS-1$ 471 logger 472 .debug("legalFilenameWithDate(String, Date, boolean) - start"); //$NON-NLS-1$ 419 473 } 420 474 if (settings == null) { 421 475 settings = ServiceProvider.instance().getSettings(); … … 423 477 String dateName = name; 424 478 int dotPos; 425 479 if (settings.isSet(AppendDateAction.APPEND_DATE_AUTO)) { 426 String date = getFormattedDate(datum, AppendDateAction.APPEND_DATE_FORMAT); 480 String date = getFormattedDate(datum, 481 AppendDateAction.APPEND_DATE_FORMAT); 427 482 if (settings.isSet(AppendDateAction.APPEND_DATE_PREFIX)) { 428 483 dateName = date + name; 429 484 } else { … … 431 486 if (dotPos < 0) { 432 487 dateName = name + date; 433 488 } else { 434 dateName = name.substring(0, dotPos) + date + name.substring(dotPos); 489 dateName = name.substring(0, dotPos) + date 490 + name.substring(dotPos); 435 491 } 436 492 } 437 493 } … … 478 534 } 479 535 int size = settings.read(prop, 16); 480 536 int dotPos = name.lastIndexOf('.'); 481 String sizedName = name.substring(0, dotPos) + Integer.toString(size) + name.substring(dotPos); 537 String sizedName = name.substring(0, dotPos) + Integer.toString(size) 538 + name.substring(dotPos); 482 539 Icon icon = getIcon(sizedName); 483 540 if (icon == null) { 484 541 icon = getIcon(name); … … 515 572 * Definiert ein persönliches Format für Datums- und Zeitangaben 516 573 */ 517 574 public static final String DATEFORMAT = "global.locale.dateformat"; //$NON-NLS-1$ 575 518 576 public static final String MENU_ICON_SIZE = "global.look.menu_iconsize"; //$NON-NLS-1$ 577 519 578 public static final String BUTTON_ICON_SIZE = "global.look.button_iconsize"; //$NON-NLS-1$ 579 520 580 public static final String TREE_ICON_SIZE = "global.look.tree_iconsize"; //$NON-NLS-1$ 521 581 } -
branches/Branch-To-Release-1_4-Neu/src/net/sourceforge/cridmanager/worker/AbstractWorker.java
17 17 import java.awt.event.MouseEvent; 18 18 import java.util.ArrayList; 19 19 import java.util.Iterator; 20 20 21 import javax.swing.JComponent; 21 22 import javax.swing.JMenuItem; 22 23 import javax.swing.JPanel; 23 24 import javax.swing.JPopupMenu; 24 25 import javax.swing.JProgressBar; 26 25 27 import net.sourceforge.cridmanager.CridController; 26 28 import net.sourceforge.cridmanager.CridInfo; 27 29 import net.sourceforge.cridmanager.ISettings; … … 29 31 import net.sourceforge.cridmanager.Utils; 30 32 import net.sourceforge.cridmanager.error.ErrorHandler; 31 33 import net.sourceforge.cridmanager.services.ServiceProvider; 34 32 35 import org.apache.log4j.Logger; 33 36 34 public abstract class AbstractWorker extends Thread implements IWorker, ActionListener { 37 public abstract class AbstractWorker extends Thread implements IWorker, 38 ActionListener { 35 39 40 private static final double MIN_PERCENTAGE_BEFORE_ESTIMATION = 0.005d; 41 36 42 private static Logger logger = Logger.getLogger(AbstractWorker.class); 43 37 44 private CridController cridController; 45 38 46 protected String message; 47 39 48 protected int progress; 49 40 50 protected JComponent display; 51 41 52 protected boolean displayed; 53 42 54 protected JProgressBar progressBar; 55 43 56 private ArrayList listenerList; 44 57 58 private boolean showProgress; 59 60 private boolean showEstimation; 61 45 62 public AbstractWorker(CridController controller) { 46 63 this.cridController = controller; 47 64 settings = ServiceProvider.instance().getSettings(); … … 50 67 displayed = true; 51 68 progress = 0; 52 69 errorTxt = ""; //$NON-NLS-1$ 70 showProgress = settings.isSet(SHOWPROGRESSBYTE); 71 showEstimation = settings.isSet(SHOWESTIMATEDTIME); 72 showSpeed = settings.isSet(SHOWSPEED); 53 73 } 54 74 55 75 protected JMenuItem mnuCancel; 76 56 77 protected JMenuItem mnuPause; 78 57 79 protected JMenuItem mnuContinue; 80 58 81 protected boolean cancelled; 82 59 83 protected boolean paused; 84 60 85 protected CridInfo[] cridInfos; 86 61 87 private long progressMax = 0; 88 62 89 private long progressCount = 0; 90 63 91 protected boolean showGui; 92 64 93 protected String errorTxt; 94 65 95 protected ISettings settings; 66 96 97 private long startTime; 98 99 private long lastExpired; 100 101 private long remaining; 102 103 private boolean showSpeed; 104 105 /* 106 * (non-Javadoc) 107 * 108 * @see java.lang.Thread#start() 109 */ 110 public synchronized void start() { 111 startTime = System.currentTimeMillis(); 112 super.start(); 113 } 114 67 115 /** 68 * Aktualisiert den Fortschritt. Wenn ein <code>ProgressBar</code> existiert wird sein Wert 69 * angepasst. Alle registrierten <code>ActionListener</code> werden informiert. 116 * Aktualisiert den Fortschritt. Wenn ein <code>ProgressBar</code> 117 * existiert wird sein Wert angepasst. Alle registrierten 118 * <code>ActionListener</code> werden informiert. 70 119 * 71 * @param percent Akueller Bearbeitungsfortschritt in Prozent. 120 * @param percent 121 * Akueller Bearbeitungsfortschritt in Prozent. 72 122 */ 73 123 protected void progress(int percent) { 74 124 testPause(); … … 82 132 private synchronized void testPause() { 83 133 if (paused) { 84 134 String oldMessage = message; 85 String pauseMessage = Utils.format( 86 Messages.getString("Worker.Pausing"), new Object[] { oldMessage }); //$NON-NLS-1$ 135 String pauseMessage = Utils.format(Messages 136 .getString("Worker.Pausing"), new Object[] { oldMessage }); //$NON-NLS-1$ 87 137 setMessage(pauseMessage); 88 138 while (paused && !cancelled) { 89 139 try { 90 140 wait(500); 91 } catch (InterruptedException e) {} 141 } catch (InterruptedException e) { 142 } 92 143 } 93 144 if (!cancelled) { 94 145 setMessage(oldMessage); … … 115 166 } 116 167 117 168 /** 118 * Setzt eine neue Fortschrittsmeldung. Wenn ein <code>ProgressBar</code> angezeigt wird, wird 119 * die Meldung dort angezeigt. Alle registrierten <code>ActionListener</code> werden informiert. 169 * Setzt eine neue Fortschrittsmeldung. Wenn ein <code>ProgressBar</code> 170 * angezeigt wird, wird die Meldung dort angezeigt. Alle registrierten 171 * <code>ActionListener</code> werden informiert. 120 172 * 121 * @param msg Die neue Fortschrittsnachricht. 173 * @param msg 174 * Die neue Fortschrittsnachricht. 122 175 */ 123 176 protected void setMessage(String msg) { 124 177 this.message = msg; 178 setMessageWithEstimation(); 179 } 180 181 private void setMessageWithEstimation() { 182 String localMessage = message; 183 if (showProgressAndEstimation()) { 184 if (showProgress) { 185 String progress = getFormattedProgressString(progressCount, 186 progressMax); 187 if (progress != null && progress.length() > 0) { 188 localMessage += " " + progress; //$NON-NLS-1$ 189 } 190 } 191 if (showEstimation || showSpeed) { 192 double percentage = (double) progressCount 193 / (double) progressMax; 194 if (percentage >= MIN_PERCENTAGE_BEFORE_ESTIMATION) { 195 long current = System.currentTimeMillis(); 196 long expired = (current - startTime) / 1000; 197 if (expired > lastExpired) { 198 lastExpired = expired; 199 remaining = (long) (expired / percentage) - expired; 200 } 201 if (showEstimation) { 202 String sExpired = Utils.formatTime(expired); 203 String sExpected = Utils.formatTime(remaining); 204 String msgFormat = settings.read(ESTIMATIONSTRING, 205 "(%0% - noch %1%)"); //$NON-NLS-1$ 206 String msg = Utils.format(msgFormat, new Object[] { 207 sExpired, sExpected }); 208 localMessage += " " + msg; //$NON-NLS-1$ 209 } 210 if (showSpeed) { 211 String speed = getFormattedSpeed(progressCount, expired); 212 if (speed != null && speed.length() > 0) { 213 localMessage += " " + speed; //$NON-NLS-1$ 214 } 215 } 216 } 217 } 218 } 125 219 if (progressBar != null) { 126 progressBar.setString(message); 220 progressBar.setString(localMessage); 127 221 } 128 222 fireActionPerformed("Message"); //$NON-NLS-1$ 129 223 } 130 224 225 protected String getFormattedProgressString(long done, long max) { 226 return null; // defaults to no string to display 227 } 228 229 protected String getFormattedSpeed(long progress, long seconds) { 230 return null; // defaults to no string to display 231 } 232 131 233 public void addActionListener(ActionListener listener) { 132 234 if (listenerList == null) { 133 235 listenerList = new ArrayList(); … … 148 250 /** 149 251 * Sendet eine Nachricht an alle regsitrierten Listener. 150 252 * 151 * @param type Der Typ der Nachricht. Zurzeit gibt es "Progress" bei einer Veränderung des 152 * Fortschrittwertes und "Message" bei einer Veränderung der Nachricht. 253 * @param type 254 * Der Typ der Nachricht. Zurzeit gibt es "Progress" bei einer 255 * Veränderung des Fortschrittwertes und "Message" bei einer 256 * Veränderung der Nachricht. 153 257 */ 154 258 protected void fireActionPerformed(String type) { 155 259 if (listenerList != null) { … … 199 303 popup.show(e.getComponent(), e.getX(), e.getY()); 200 304 } 201 305 } catch (RuntimeException exc) { 202 ErrorHandler.showError("Popupmenü kann nicht angezeigt werden.", exc); //$NON-NLS-1$ 306 ErrorHandler.showError( 307 "Popupmenü kann nicht angezeigt werden.", exc); //$NON-NLS-1$ 203 308 } 204 309 } 205 310 }); … … 233 338 } 234 339 235 340 /** 236 * Erhöhe den Fortschritt um den angegebenen absoluten Wert, berechne und setze den neuen 237 * prozentualen Fortschrittswert. 341 * Erhöhe den Fortschritt um den angegebenen absoluten Wert, berechne und 342 * setze den neuen prozentualen Fortschrittswert. 238 343 * 239 * @param increment Gerade getätigter Fortschritt 344 * @param increment 345 * Gerade getätigter Fortschritt 240 346 */ 241 347 protected void progressInc(long increment) { 242 348 progressCount += increment; 243 349 if (progressMax > 0) { 244 350 int percent = (int) (progressCount * 100L / progressMax); 245 351 progress(percent); 352 if (showProgressAndEstimation()) { 353 setMessageWithEstimation(); 354 } 246 355 } 247 356 } 248 357 358 private boolean showProgressAndEstimation() { 359 return showEstimation || showProgress || showSpeed; 360 } 361 249 362 /** 250 * Setze den 100 Prozent Wert für die Fortschrittsberechnung und aktualisiere den prozentualen 251 * Fortschritt. 363 * Setze den 100 Prozent Wert für die Fortschrittsberechnung und 364 * aktualisiere den prozentualen Fortschritt. 252 365 * 253 * @param value 100% Fortschritt entsprechen diesem Wert 366 * @param value 367 * 100% Fortschritt entsprechen diesem Wert 254 368 */ 255 369 protected void setProgressMax(long value) { 256 370 progressMax = value; … … 279 393 } 280 394 281 395 /** 282 * 396 * 283 397 */ 284 398 private void pauseAction() { 285 399 paused = true; … … 288 402 } 289 403 290 404 /** 291 * 405 * 292 406 */ 293 407 private void continueAction() { 294 408 paused = false; … … 297 411 } 298 412 299 413 /** 300 * Brich den aktuallen Thread ab. Zunächst kann eine Aktion vor dem Canceln durchgeführt werden, 301 * die den Abbruch noch verhindern kann, dann wird der Thread gecancelt und anschließend kann eine 302 * Nachbereitung stattfinden. 414 * Brich den aktuallen Thread ab. Zunächst kann eine Aktion vor dem Canceln 415 * durchgeführt werden, die den Abbruch noch verhindern kann, dann wird der 416 * Thread gecancelt und anschließend kann eine Nachbereitung stattfinden. 303 417 */ 304 418 private void cancelAction() { 305 419 if (preCancelAction()) { … … 309 423 } 310 424 311 425 /** 312 * Die Aktion vor dem Abbrechen des Threads. Sollte von der abgeleiteten Klasse überschrieben 313 * werden, um z.B. den Benutzer noch einmal um eine BEstätigung zu bitten. 426 * Die Aktion vor dem Abbrechen des Threads. Sollte von der abgeleiteten 427 * Klasse überschrieben werden, um z.B. den Benutzer noch einmal um eine 428 * BEstätigung zu bitten. 314 429 * 315 430 * @return true, wenn der Thread wirklich abgebrochen werden soll. 316 431 */ … … 319 434 } 320 435 321 436 /** 322 * Ermöglicht das Durchführen einer Aktion nach dem Abbruch des Threads. Zurzeit kann hier keine 323 * sinnvolle Aktion durchgeführt werden, da der Thread-Abbruch durch das Setzen eines Flags 324 * geschieht und somit der tatsächliche Abbruch erst nach Aufruf dieser Funktion stattfindet. 437 * Ermöglicht das Durchführen einer Aktion nach dem Abbruch des Threads. 438 * Zurzeit kann hier keine sinnvolle Aktion durchgeführt werden, da der 439 * Thread-Abbruch durch das Setzen eines Flags geschieht und somit der 440 * tatsächliche Abbruch erst nach Aufruf dieser Funktion stattfindet. 325 441 */ 326 protected void postCancelAction() {} 442 protected void postCancelAction() { 443 } 327 444 328 445 /** 329 * Setze das Abbruchflag für den Thread und setze eine entsprechende Nachricht. 446 * Setze das Abbruchflag für den Thread und setze eine entsprechende 447 * Nachricht. 330 448 */ 331 449 protected void cancelThread() { 332 450 cancelThread(true); -
branches/Branch-To-Release-1_4-Neu/src/net/sourceforge/cridmanager/worker/IWorker.java
10 10 * Erfolgsmeldung nach Aktionen anzeigen [#1114576] Bestätigungsmeldung nach Kopieren optional 11 11 */ 12 12 static final String SUCCESSMESSAGE = "files.copy.success"; //$NON-NLS-1$ 13 static final String SHOWPROGRESSBYTE = "global.workers.byteprogress"; //$NON-NLS-1$ 14 static final String SHOWESTIMATEDTIME = "global.workers.estimatedtime"; //$NON-NLS-1$ 15 static final String ESTIMATIONSTRING = "global.workers.estimationmessage"; //$NON-NLS-1$ 16 static final String SHOWSPEED = "global.workers.speed"; //$NON-NLS-1$ 13 17 14 18 /** 15 19 * Flag, ob der Worker angezeigt wird. -
branches/Branch-To-Release-1_4-Neu/src/net/sourceforge/cridmanager/worker/SingleCridWithSizeWorker.java
1 /** 2 * 3 */ 4 package net.sourceforge.cridmanager.worker; 5 6 import net.sourceforge.cridmanager.CridController; 7 import net.sourceforge.cridmanager.CridInfo; 8 import net.sourceforge.cridmanager.Utils; 9 10 /** 11 * @author Olaf 12 * 13 */ 14 public abstract class SingleCridWithSizeWorker extends SingleCridWorker { 15 16 private static final String PROGRESSBYTEMESSAGE = "global.workers.bytemessage"; //$NON-NLS-1$ 17 18 private static final String SPEEDMESSAGE = "global.workers.speedmessage"; //$NON-NLS-1$ 19 20 protected SingleCridWithSizeWorker(CridInfo info, CridController controller) { 21 super(info, controller); 22 } 23 24 /* 25 * (non-Javadoc) 26 * 27 * @see net.sourceforge.cridmanager.worker.AbstractWorker#getFormattedProgressString(long, 28 * long) 29 */ 30 protected String getFormattedProgressString(long done, long max) { 31 String doneSize = Utils.formatFilesize(done); 32 String maxSize = Utils.formatFilesize(max); 33 String sizeFormat = settings 34 .read(PROGRESSBYTEMESSAGE, " (%0% von %1%)"); //$NON-NLS-1$ 35 String result = Utils.format(sizeFormat, new Object[] { doneSize, 36 maxSize }); 37 return result; 38 } 39 40 /* 41 * (non-Javadoc) 42 * 43 * @see net.sourceforge.cridmanager.worker.AbstractWorker#getFormattedSpeed(long) 44 */ 45 protected String getFormattedSpeed(long done, long seconds) { 46 long avg = done / seconds; 47 String speed = Utils.formatFilesize(avg); 48 String speedFormat = settings.read(SPEEDMESSAGE, "%0%/s"); //$NON-NLS-1$ 49 String result = Utils.format(speedFormat, new Object[] { speed }); 50 return result; 51 } 52 } -
branches/Branch-To-Release-1_4-Neu/src/net/sourceforge/cridmanager/worker/WorkerCopyFile.java
35 35 /** 36 36 * Ein Worker, der eine Aufnahme mit allen zugehörigen Dateien kopiert. 37 37 */ 38 public class WorkerCopyFile extends SingleCridWorker { 38 public class WorkerCopyFile extends SingleCridWithSizeWorker { 39 39 40 40 private static Logger logger = Logger.getLogger(WorkerCopyFile.class); 41 41 private static final Logger tlog = Logger.getLogger(Start.THREAD); -
branches/Branch-To-Release-1_4-Neu/src/net/sourceforge/cridmanager/worker/WorkerJoinRecording.java
32 32 * Ein Worker, der die einzelnen MPG-Dateien einer Aufnahme zu einer Datei zusammensetzt (TS = 33 33 * TransportStream). 34 34 */ 35 public class WorkerJoinRecording extends SingleCridWorker { 35 public class WorkerJoinRecording extends SingleCridWithSizeWorker { 36 36 37 37 private static Logger logger = Logger.getLogger(WorkerJoinRecording.class); 38 38 private static final Logger tlog = Logger.getLogger(Start.THREAD);