Revision: 9228
Author: [email protected]
Date: Mon Nov 15 02:38:06 2010
Log: Adding a new CommonResources class that provides access to commonly used styles in GWT. For now, the only style defined is a cross browser implementation of inline block, but we can expand to include more common styles later.

Review at http://gwt-code-reviews.appspot.com/1106801

Review by: [email protected]
http://code.google.com/p/google-web-toolkit/source/detail?r=9228

Added:
 /trunk/user/src/com/google/gwt/resources/client/CommonResources.java
 /trunk/user/src/com/google/gwt/resources/client/inline-block.css

=======================================
--- /dev/null
+++ /trunk/user/src/com/google/gwt/resources/client/CommonResources.java Mon Nov 15 02:38:06 2010
@@ -0,0 +1,71 @@
+/*
+ * Copyright 2010 Google Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not + * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+package com.google.gwt.resources.client;
+
+import com.google.gwt.core.client.GWT;
+
+/**
+ * Generally useful styles and resources used throughout GWT widgets and cells.
+ */
+public class CommonResources {
+
+  /**
+   * The {...@link ClientBundle} of resources.
+   */
+  static interface Bundle extends ClientBundle {
+
+    @Source("inline-block.css")
+    InlineBlockStyle inlineBlockStyle();
+  }
+
+  /**
+ * Cross-browser implementation of the "display: inline-block" CSS property.
+   */
+  static interface InlineBlockStyle extends CssResource {
+
+    /**
+     * The inline block style.
+     */
+    String inlineBlock();
+  }
+
+  /**
+   * Lazily loaded singleton.
+   */
+  private static Bundle instance;
+
+  /**
+   * Ensure that the shared {...@link Bundle} is created and return it.
+   *
+   * @return the {...@link Bundle} of resources
+   */
+  private static Bundle ensureResources() {
+    if (instance == null) {
+      instance = GWT.create(Bundle.class);
+    }
+    return instance;
+  }
+
+  /**
+ * Get the style class name that simulates a "display: inline-block" effect
+   * across browsers.
+   */
+  public static String getInlineBlockStyle() {
+    InlineBlockStyle style = ensureResources().inlineBlockStyle();
+    style.ensureInjected();
+    return style.inlineBlock();
+  }
+}
=======================================
--- /dev/null
+++ /trunk/user/src/com/google/gwt/resources/client/inline-block.css Mon Nov 15 02:38:06 2010
@@ -0,0 +1,59 @@
+/*
+ * Copyright 2010 Google Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not + * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+
+/*
+ * Cross-browser implementation of the "display: inline-block" CSS property.
+ * See http://www.w3.org/TR/CSS21/visuren.html#propdef-display for details.
+ * Tested on IE 6 & 7, FF 2.0 & 3.0, Safari 2 & 3, Webkit, Chrome and Opera 9.
+ *
+ * Original author: [email protected] (Attila Bodis)
+ */
+
+/*
+ * Firefox hack is needed for versions < FF3. But since the user.agent property + * does not allow us to specify directly for (versions < FF3), we will need to
+ * use the following two rules to workaround.
+ */
+/* Firefox versions >= FF 1.5 */
+...@if user.agent gecko1_8 {
+  .inlineBlock {
+    /*
+ * Note on funny syntax: what we really need is this: "display: -moz-inline-box;" + * but "\\" is needed to make GWT's CssResource escape the "-" character properly.
+     */
+    display: \\-moz-inline-box; /* This is ignored by FF3 and later*/
+  }
+}
+
+/* Default rule; only Safari, Webkit, Opera, FF3 handle it without hacks. */
+.inlineBlock {
+  position: relative;
+  display: inline-block;
+}
+
+/*
+ * IE specific rules (for IE version IE6/7)
+ * On IE, "display: inline-block" only gives the element layout, but doesn't + * give it inline behavior. Subsequently setting display to inline does the
+ * trick.
+ */
+...@if user.agent ie6 {
+  .inlineBlock {
+    /* workaround to make IE "hasLayout" */
+    zoom: 1;
+    display: inline;
+  }
+}

--
http://groups.google.com/group/Google-Web-Toolkit-Contributors

Reply via email to