Project Name | Stars | Downloads | Repos Using This | Packages Using This | Most Recent Commit | Total Releases | Latest Release | Open Issues | License | Language |
---|---|---|---|---|---|---|---|---|---|---|
Gwt Polymer Elements | 154 | 39 | 1 | 5 years ago | 8 | September 17, 2017 | 23 | apache-2.0 | Java | |
Polymer Web Components for GWT. A collection of Material Design widgets for desktop and mobile. | ||||||||||
Gamecomposer | 65 | a month ago | 5 | Java | ||||||
GameComposer is a game authoring tool and also a game runtime environment targeting at desktop and mobile devices. | ||||||||||
Gwt Api Generator | 51 | 5 years ago | 16 | apache-2.0 | JavaScript | |||||
Generator for creating GWT JSInterop clients from Polymer Web Components | ||||||||||
Gwt Polymer Todo List | 25 | 6 years ago | 2 | Java | ||||||
A TODO app developed with GWT + polymer + paper elements | ||||||||||
Gwt Polymer Starter Kit | 19 | 6 years ago | 2 | Java | ||||||
GWT Polymer Starter Kit - A starting point for developing Web applications using GWT and Polymer | ||||||||||
Gwtc | 14 | 8 years ago | JavaScript | |||||||
A Gwt compiler written in Gwt using Java 8, Elemental, JsInterop and Web Components (Polymer) | ||||||||||
Gwt Polymer Chat App | 11 | 7 years ago | Java | |||||||
Full stack realtime chat app gwt + polymer + pouchdb + couchdb | ||||||||||
Vaadin Pouchdb | 10 | 7 | 6 years ago | December 07, 2016 | HTML | |||||
polymer web component for pouchdb | ||||||||||
X Gwt | 9 | 6 years ago | 1 | apache-2.0 | Java | |||||
Extend Google Web Toolkit | ||||||||||
Gwt Pwa Archetype | 8 | 6 years ago | 1 | other | Java | |||||
A maven archetype for GWT Progressive Web Apps (PWA) and polymer |
Vaadin transfers the ownership of this library, thus Vaadin no longer provides support or does active development on it.
We took this decision because once demonstrated that polymer elements could be easily be integrated in GWT, we want to invest our teams time in adding valuable user benefits to Vaadin Core Elements, and pass the baton to the community to do integrations with other frameworks.
In addition, we are happy to announce that ownership of the repository will be transferred by 20 Apr 2017 to @manolo, who will continue to maintain it.
If you are willing to participate as a collaborator, please leave a comment in #151. The collaborators will be granted access after transferring. We encourage contribution in any form and shape.
The library has been generated using the Vaadin gwt-api-generator, an utility able to inspect polymer webcomponents and emit GWT Java code.
Because Polymer differentiates between collections, gwt-polymer-elements classes are prefixed with the same prefixes (Iron, Paper, Vaadin), in order to easily refer to the original web component, and to easily find the documentation related with it.
Visit our show case to see how components look like, and to take a look to the example code using each component.
When we parse the original components code to generate the Java API, we copy all the existing JS documentation so as it's available in the javadoc. Note that sometimes descriptions would refer to JS, but we consider that it's better to maintain the info.
You need at least GWT-2.8.0 to use the library.
The .jar
file includes all the java code and web components of
Polymer Iron and Paper collections, so as you don't have to deal with the process of downloading and deploying all js wrapped libraries and components.
pom.xml
<dependencies>
<dependency>
<groupId>com.vaadin.polymer</groupId>
<artifactId>vaadin-gwt-polymer-elements</artifactId>
<version>1.7.0.0</version>
<scope>provided</scope>
</dependency>
</dependencies>
vaadin-gwt-polymer-elements-1.7.0.0.jar
archive and put it in your gwt project classpath.*.gwt.xml
module file: <inherits name="com.vaadin.polymer.Elements"/>
Only Chrome has full native support for Web Components nowadays, therefore, to make your project work with all modern browsers, you have to include the WebComponents Polyfill.
If you use the polymer components as Widgets
, the library will lazy load it when needed.
Otherwise load it very early in your .html
host page as it is shown in the following code.
<head>
<script src="myapp/bower_components/webcomponentsjs/webcomponents.js"></script>
<script src="myapp/myapp.nocache.js"></script>
</head>
Vaadin gwt-polymer-elements
bundles classes to build your application using either Widgets
or JsInterop Elements
. The former is the classic approach, while the latter will become the new tendency.
But Right now, Elements
is the most difficult way because GWT lacks of a complete Elemental-2.0
API relying on JsInterop
.
We provide a very small set of elemental interfaces limited to those needed for our implementation, they will be replaced by Elemental-2.0 when it was available.
In summary, for classic and production GWT projects it would be easier to use the Widget
since the API would not have important changes. Otherwise, if you want to get rid of the widget hierarchy we recommend to start using the Element
API mixing it with some DOM manipulation library like gwtquery
or just the methods included in the elemental API.
PaperButton button = new PaperButton();
button.setIcon("polymer");
button.setLabel("Polymer");
button.setRaised(true);
button.addClickHandler(new ClickHandler() {
public void onClick(ClickEvent event) {
// ...
}
});
RootPanel.get().add(button);
Note: Widget constructors accept any HTML content as argument which is appended to the web component rendered DOM
// Create a new instance of PaperButton
PaperButtonElement button = Polymer.createElement(PaperButtonElement.TAG);
// Set some properties
button.setIcon("polymer");
button.setLabel("Polymer");
button.setRaised(true);
// Add event listeners
button.addEventListener("click", new EventListener() {
public void onBrowserEvent(Event event) {
// ...
}
});
// Append to the html document
RootPanel.get().getElement().appendChild(button);
Widgets
or Elements
in UiBinder
<ui:UiBinder xmlns:ui='urn:ui:com.google.gwt.uibinder'
xmlns:g='urn:import:com.google.gwt.user.client.ui'
xmlns:p='urn:import:com.vaadin.polymer.paper.widget'>
<ui:style>
.container paper-button.colored {
background: #4285f4;
color: #fff;
}
</ui:style>
<g:HTMLPanel>
<!-- As Widget -->
<p:PaperButton toggles="true" raised="true" active="true" addStyleNames="{style.colored}">active</p:PaperButton>
<!-- As Element -->
<paper-button raised="" noink="">Click me</paper-button>
</g:HTMLPanel>
Polymer uses Shadow DOM styling rules for providing scoped styling of the elements local DOM. It supports some extra syntax which is not understable by the GWT GSS parser.
Polymer takes care of its syntax parsing any <style>
block you might have in your host page, but if you want to specify some styling rules in UiBinder, you have to add your style blocks to any panel.
<ui:UiBinder xmlns:ui='urn:ui:com.google.gwt.uibinder'
xmlns:g='urn:import:com.google.gwt.user.client.ui'
xmlns:p='urn:import:com.vaadin.polymer.paper.widget'>
<g:HTMLPanel>
<style is="custom-style">
paper-toolbar paper-icon-button {
--paper-icon-button-ink-color: var(--paper-indigo-500);
}
</style>
<p:PaperToolbar>
<p:PaperIconButton icon="menu"/>
<span class="title">Toolbar</span>
</p:PaperToolbar>
</g:HTMLPanel>
For more information about polymer styling syntax visit their documentation
If you want to dive into .java
sources, we don't maintain generated files, thus you need to download the vaadin-gwt-polymer-elements-x.x.x-sources.jar bundle.
Otherwise you might take a look java helper classes and templates look in the gwt-api-generator project.
Before using any component, you have to import the appropriate files. But gwt-polymer-elements
comes with some utilities so as you it would be done automatically.
PaperButton button = new PapperButton();
Polymer
helper class PaperButtonElement button = Polymer.createElement(PaperButtonElement.TAG);
Polymer
has a couple of methods to do the import dynamically Polymer.importHref("paper-button/paper-button.html");
<link rel='import' href='application_context/bower_components/paper-button/paper-button.html'></link>
Web Components could be registered and initialised asynchronously. Thus gwt-polymer-elements
comes with some methods which helps to run callbacks when the component is actually ready.
PaperButtonElement button = Polymer.createElement(PaperButtonElement.TAG);
Polymer.ready(button, new Function() {
public Object call(Object args) {
// Set button properties here
}
})
PolymerButton button = new PolymerButton();
// You could set methods here
button.setFoo(bar);
button.ready(new Function() {
public Object call(Object args) {
// But you have to enclose in a callback calls to element methods
}
});
Polymer.importHref(Arrays.asList("paper-tabs", "paper-tab-element"), new Function() {
public Object call(Object args) {
// Create your elements here and call their methods
}
})
Add the following repo to your pom.xml
, and change the version using the latest listed at in this url
<repository>
<id>snapshots</id>
<url>https://oss.sonatype.org/content/repositories/snapshots/</url>
<snapshots><enabled>true</enabled></snapshots>
</repository>
To compile the vaadin-gwt-polymer-elements
library by yourself.
$ git checkout https://github.com/vaadin/gwt-polymer-elements.git
$ cd gwt-polymer-elements
$ npm install
to download all components to the src/main/resources
folder, to create all java files needed for GWT in the src/main/java/
folder and to compile and install the components library in you local maven repo.$ cd demo
$ mvn gwt:devmode
to run the demo in SuperDevMode, otherwise run $ mvn clean package
to
build the demo application under target
directory.target/gwt-polymer-demo
or you can deploy the generated target/gwt-polymer-demo.war
in a servlet container.