summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorShawn O. Pearce <sop@google.com>2009-05-16 10:50:44 -0700
committerShawn O. Pearce <sop@google.com>2009-05-16 10:51:57 -0700
commit196f5d7492faa63c567b85c4f5344a1bfa715be6 (patch)
tree5fe795fe1a2675f231e09154fb8951fcd362b9b1
parent1cff64ef2a73e97550cb37b76a1fa0f1d73c7c32 (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>
-rw-r--r--src/main/java/com/google/gerrit/client/Gerrit.java2
-rw-r--r--src/main/java/com/google/gerrit/client/account/AccountConstants.java1
-rw-r--r--src/main/java/com/google/gerrit/client/account/AccountConstants.properties1
-rw-r--r--src/main/java/com/google/gerrit/client/account/PreferencePanel.java24
-rw-r--r--src/main/java/com/google/gerrit/client/reviewdb/AccountGeneralPreferences.java13
-rw-r--r--src/main/java/com/google/gerrit/client/reviewdb/ReviewDb.java2
-rw-r--r--src/main/webapp/WEB-INF/sql/upgrade010_011.sql9
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;