Esanders has uploaded a new change for review.

  https://gerrit.wikimedia.org/r/308302

Change subject: Allow progress dialog items to be non-cancellable
......................................................................

Allow progress dialog items to be non-cancellable

Change-Id: Ifa4157816455139cd9e728b252e6433ced51a396
---
M src/ui/dialogs/ve.ui.ProgressDialog.js
M src/ui/ve.ui.Surface.js
2 files changed, 20 insertions(+), 12 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/VisualEditor/VisualEditor 
refs/changes/02/308302/1

diff --git a/src/ui/dialogs/ve.ui.ProgressDialog.js 
b/src/ui/dialogs/ve.ui.ProgressDialog.js
index 2c4a6d7..64b228a 100644
--- a/src/ui/dialogs/ve.ui.ProgressDialog.js
+++ b/src/ui/dialogs/ve.ui.ProgressDialog.js
@@ -32,7 +32,8 @@
        {
                action: 'cancel',
                label: OO.ui.deferMsg( 'visualeditor-dialog-action-cancel' ),
-               flags: 'destructive'
+               flags: 'destructive',
+               modes: 'cancellable'
        }
 ];
 
@@ -60,6 +61,7 @@
        return ve.ui.ProgressDialog.super.prototype.getSetupProcess.call( this, 
data )
                .next( function () {
                        var i, l, $row, progressBar, fieldLayout, cancelButton, 
cancelDeferred,
+                               cancellable = false,
                                progresses = data.progresses;
 
                        this.inProgress = progresses.length;
@@ -77,17 +79,21 @@
                                                align: 'top'
                                        }
                                );
-                               cancelButton = new OO.ui.ButtonWidget( {
-                                       framed: false,
-                                       icon: 'cancel',
-                                       iconTitle: OO.ui.deferMsg( 
'visualeditor-dialog-action-cancel' )
-                               } ).on( 'click', cancelDeferred.reject.bind( 
cancelDeferred ) );
 
-                               this.text.$element.append(
-                                       $row.append(
-                                               fieldLayout.$element, 
cancelButton.$element
-                                       )
-                               );
+                               $row.append( fieldLayout.$element );
+
+                               if ( progresses[ i ].cancellable ) {
+                                       cancelButton = new OO.ui.ButtonWidget( {
+                                               framed: false,
+                                               icon: 'cancel',
+                                               iconTitle: OO.ui.deferMsg( 
'visualeditor-dialog-action-cancel' )
+                                       } ).on( 'click', 
cancelDeferred.reject.bind( cancelDeferred ) );
+                                       $row.append( cancelButton.$element );
+                                       cancellable = true;
+                               }
+                               this.actions.setMode( cancellable ? 
'cancellable' : 'default' );
+
+                               this.text.$element.append( $row );
                                progresses[ i ].progressBarDeferred.resolve( 
progressBar, cancelDeferred.promise() );
                                /*jshint loopfunc:true */
                                progresses[ i ].progressCompletePromise.then(
diff --git a/src/ui/ve.ui.Surface.js b/src/ui/ve.ui.Surface.js
index 2b8a3b3..d16b1cf 100644
--- a/src/ui/ve.ui.Surface.js
+++ b/src/ui/ve.ui.Surface.js
@@ -579,13 +579,15 @@
  *
  * @param {jQuery.Promise} progressCompletePromise Promise which resolves when 
the progress action is complete
  * @param {jQuery|string|Function} label Progress bar label
+ * @param {boolean} nonCancellable Progress item can't be cancelled
  * @return {jQuery.Promise} Promise which resolves with a progress bar widget 
and a promise which fails if cancelled
  */
-ve.ui.Surface.prototype.createProgress = function ( progressCompletePromise, 
label ) {
+ve.ui.Surface.prototype.createProgress = function ( progressCompletePromise, 
label, nonCancellable ) {
        var progressBarDeferred = $.Deferred();
 
        this.progresses.push( {
                label: label,
+               cancellable: !nonCancellable,
                progressCompletePromise: progressCompletePromise,
                progressBarDeferred: progressBarDeferred
        } );

-- 
To view, visit https://gerrit.wikimedia.org/r/308302
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: Ifa4157816455139cd9e728b252e6433ced51a396
Gerrit-PatchSet: 1
Gerrit-Project: VisualEditor/VisualEditor
Gerrit-Branch: master
Gerrit-Owner: Esanders <esand...@wikimedia.org>

_______________________________________________
MediaWiki-commits mailing list
MediaWiki-commits@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to