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