diff options
author | Shawn O. Pearce <sop@google.com> | 2009-05-16 10:50:44 -0700 |
---|---|---|
committer | Shawn O. Pearce <sop@google.com> | 2009-05-16 10:51:57 -0700 |
commit | 196f5d7492faa63c567b85c4f5344a1bfa715be6 (patch) | |
tree | 5fe795fe1a2675f231e09154fb8951fcd362b9b1 | |
parent | 1cff64ef2a73e97550cb37b76a1fa0f1d73c7c32 (diff) |
Allow users to disable clippy the flash movie if they don't like it
I've found that although clippy is useful, it slows down the page
rendering as the Flash plugin has to initialize on the host page
every time we change the text we want to permit copying. It also
doesn't work on every operating where flash is supported.
Since CopyableLabel already supports some JavaScript based support
we can just give the user a preference to turn off the flash UI,
and fallback on the pure JavaScript based code.
Signed-off-by: Shawn O. Pearce <sop@google.com>
7 files changed, 46 insertions, 6 deletions
diff --git a/src/main/java/com/google/gerrit/client/Gerrit.java b/src/main/java/com/google/gerrit/client/Gerrit.java index aa067d65d6..1e20f65f47 100644 --- a/src/main/java/com/google/gerrit/client/Gerrit.java +++ b/src/main/java/com/google/gerrit/client/Gerrit.java @@ -43,6 +43,7 @@ import com.google.gwt.user.client.ui.Label; import com.google.gwt.user.client.ui.RootPanel; import com.google.gwt.user.client.ui.TabPanel; import com.google.gwt.user.client.ui.HTMLTable.CellFormatter; +import com.google.gwtexpui.clippy.client.CopyableLabel; import com.google.gwtexpui.globalkey.client.GlobalKey; import com.google.gwtexpui.globalkey.client.KeyCommand; import com.google.gwtexpui.globalkey.client.KeyCommandFilter; @@ -407,6 +408,7 @@ public class Gerrit implements EntryPoint { public static void applyUserPreferences() { final AccountGeneralPreferences p = myAccount.getGeneralPreferences(); + CopyableLabel.setFlashEnabled(p.isUseFlashClipboard()); if (siteHeader != null) { siteHeader.setVisible(p.isShowSiteHeader()); } diff --git a/src/main/java/com/google/gerrit/client/account/AccountConstants.java b/src/main/java/com/google/gerrit/client/account/AccountConstants.java index 4f2789f3bd..efc4d57f76 100644 --- a/src/main/java/com/google/gerrit/client/account/AccountConstants.java +++ b/src/main/java/com/google/gerrit/client/account/AccountConstants.java @@ -28,6 +28,7 @@ public interface AccountConstants extends Constants { String defaultContextFieldLabel(); String contextWholeFile(); String showSiteHeader(); + String useFlashClipboard(); String buttonSaveChanges(); String tabPreferences(); diff --git a/src/main/java/com/google/gerrit/client/account/AccountConstants.properties b/src/main/java/com/google/gerrit/client/account/AccountConstants.properties index 46d124b39e..0953877684 100644 --- a/src/main/java/com/google/gerrit/client/account/AccountConstants.properties +++ b/src/main/java/com/google/gerrit/client/account/AccountConstants.properties @@ -6,6 +6,7 @@ sshUserName = SSH Username registeredOn = Registered accountId = Account ID showSiteHeader = Show Site Header +useFlashClipboard = Use Flash Clipboard Widget defaultContextFieldLabel = Default Context: contextWholeFile = Whole File buttonSaveChanges = Save Changes diff --git a/src/main/java/com/google/gerrit/client/account/PreferencePanel.java b/src/main/java/com/google/gerrit/client/account/PreferencePanel.java index 26ab4fcf7b..5afb58036c 100644 --- a/src/main/java/com/google/gerrit/client/account/PreferencePanel.java +++ b/src/main/java/com/google/gerrit/client/account/PreferencePanel.java @@ -33,6 +33,7 @@ import com.google.gwtjsonrpc.client.VoidResult; class PreferencePanel extends Composite { private CheckBox showSiteHeader; + private CheckBox useFlashClipboard; private ListBox defaultContext; private Button save; @@ -49,6 +50,9 @@ class PreferencePanel extends Composite { showSiteHeader = new CheckBox(Util.C.showSiteHeader()); showSiteHeader.addClickHandler(onClickSave); + useFlashClipboard = new CheckBox(Util.C.useFlashClipboard()); + useFlashClipboard.addClickHandler(onClickSave); + defaultContext = new ListBox(); for (final short v : AccountGeneralPreferences.CONTEXT_CHOICES) { final String label; @@ -74,13 +78,20 @@ class PreferencePanel extends Composite { labelIdx = 0; fieldIdx = 1; } - final Grid formGrid = new Grid(2, 2); + final Grid formGrid = new Grid(3, 2); + + int row = 0; + formGrid.setText(row, labelIdx, ""); + formGrid.setWidget(row, fieldIdx, showSiteHeader); + row++; - formGrid.setText(0, labelIdx, ""); - formGrid.setWidget(0, fieldIdx, showSiteHeader); + formGrid.setText(row, labelIdx, ""); + formGrid.setWidget(row, fieldIdx, useFlashClipboard); + row++; - formGrid.setText(1, labelIdx, Util.C.defaultContextFieldLabel()); - formGrid.setWidget(1, fieldIdx, defaultContext); + formGrid.setText(row, labelIdx, Util.C.defaultContextFieldLabel()); + formGrid.setWidget(row, fieldIdx, defaultContext); + row++; body.add(formGrid); @@ -110,11 +121,13 @@ class PreferencePanel extends Composite { private void enable(final boolean on) { showSiteHeader.setEnabled(on); + useFlashClipboard.setEnabled(on); defaultContext.setEnabled(on); } private void display(final AccountGeneralPreferences p) { showSiteHeader.setValue(p.isShowSiteHeader()); + useFlashClipboard.setValue(p.isUseFlashClipboard()); displayDefaultContext(p.getDefaultContext()); } @@ -139,6 +152,7 @@ class PreferencePanel extends Composite { private void doSave() { final AccountGeneralPreferences p = new AccountGeneralPreferences(); p.setShowSiteHeader(showSiteHeader.getValue()); + p.setUseFlashClipboard(useFlashClipboard.getValue()); p.setDefaultContext(getDefaultContext()); enable(false); diff --git a/src/main/java/com/google/gerrit/client/reviewdb/AccountGeneralPreferences.java b/src/main/java/com/google/gerrit/client/reviewdb/AccountGeneralPreferences.java index f9ab9d9cc7..57624e8f78 100644 --- a/src/main/java/com/google/gerrit/client/reviewdb/AccountGeneralPreferences.java +++ b/src/main/java/com/google/gerrit/client/reviewdb/AccountGeneralPreferences.java @@ -36,6 +36,10 @@ public final class AccountGeneralPreferences { @Column protected boolean showSiteHeader; + /** Should the Flash helper movie be used to copy text to the clipboard? */ + @Column + protected boolean useFlashClipboard; + public AccountGeneralPreferences() { } @@ -57,8 +61,17 @@ public final class AccountGeneralPreferences { showSiteHeader = b; } + public boolean isUseFlashClipboard() { + return useFlashClipboard; + } + + public void setUseFlashClipboard(final boolean b) { + useFlashClipboard = b; + } + public void resetToDefaults() { defaultContext = DEFAULT_CONTEXT; showSiteHeader = true; + useFlashClipboard = true; } } diff --git a/src/main/java/com/google/gerrit/client/reviewdb/ReviewDb.java b/src/main/java/com/google/gerrit/client/reviewdb/ReviewDb.java index 21622ad9dc..69f1377afb 100644 --- a/src/main/java/com/google/gerrit/client/reviewdb/ReviewDb.java +++ b/src/main/java/com/google/gerrit/client/reviewdb/ReviewDb.java @@ -21,7 +21,7 @@ import com.google.gwtorm.client.Sequence; /** The review service database schema. */ public interface ReviewDb extends Schema { - public static final int VERSION = 10; + public static final int VERSION = 11; @Relation SchemaVersionAccess schemaVersion(); diff --git a/src/main/webapp/WEB-INF/sql/upgrade010_011.sql b/src/main/webapp/WEB-INF/sql/upgrade010_011.sql new file mode 100644 index 0000000000..ced71a1226 --- /dev/null +++ b/src/main/webapp/WEB-INF/sql/upgrade010_011.sql @@ -0,0 +1,9 @@ +-- Upgrade: schema_version 10 to 11 +-- + +ALTER TABLE accounts ADD use_flash_clipboard CHAR(1); +UPDATE accounts SET use_flash_clipboard = 'Y'; +ALTER TABLE accounts ALTER COLUMN use_flash_clipboard SET DEFAULT 'N'; +ALTER TABLE accounts ALTER COLUMN use_flash_clipboard SET NOT NULL; + +UPDATE schema_version SET version_nbr = 11; |