Browse Source

Merge branch 'master' into feature/mavenize

Change-Id: Id7db526d07a14ac259cbb50415bbafd2a7c2ab94
tags/7.7.0.alpha1
elmot 8 years ago
parent
commit
980f879176
100 changed files with 2506 additions and 824 deletions
  1. 14
    0
      WebContent/WEB-INF/web.xml
  2. 0
    20
      all/src/main/resources/WebContent/licenses/the-json-license.txt
  3. 4
    0
      all/src/main/templates/release-notes.html
  4. 25
    1
      client-compiler/src/main/java/com/vaadin/server/widgetsetutils/metadata/RendererVisitor.java
  5. 6
    3
      client/src/main/java/com/vaadin/client/ApplicationConnection.java
  6. 12
    8
      client/src/main/java/com/vaadin/client/connectors/JavaScriptRendererConnector.java
  7. 23
    19
      client/src/main/java/com/vaadin/client/ui/VDragAndDropWrapper.java
  8. 20
    0
      client/src/main/java/com/vaadin/client/ui/VFilterSelect.java
  9. 15
    1
      client/src/main/java/com/vaadin/client/ui/draganddropwrapper/DragAndDropWrapperConnector.java
  10. 19
    14
      client/src/main/java/com/vaadin/client/ui/table/TableConnector.java
  11. 2
    2
      client/src/main/java/com/vaadin/client/widget/escalator/ScrollbarBundle.java
  12. 9
    0
      client/src/main/java/com/vaadin/client/widgets/Escalator.java
  13. 5
    1
      client/src/main/java/com/vaadin/client/widgets/Grid.java
  14. 17
    23
      documentation/advanced/advanced-architecture.asciidoc
  15. 13
    12
      documentation/advanced/advanced-debug.asciidoc
  16. BIN
      documentation/advanced/img/three-layer-architecture-hi.png
  17. 13
    0
      documentation/advanced/original-drawings/Makefile
  18. 1069
    0
      documentation/advanced/original-drawings/three-layer-architecture.svg
  19. 25
    35
      documentation/application/application-declarative.asciidoc
  20. 18
    25
      documentation/application/application-environment.asciidoc
  21. 1
    6
      documentation/architecture/architecture-overview.asciidoc
  22. 1
    6
      documentation/clientside/clientside-widget.asciidoc
  23. BIN
      documentation/clientside/img/gwt-widgets-hi.png
  24. 13
    0
      documentation/clientside/original-drawings/Makefile
  25. 0
    0
      documentation/clientside/original-drawings/gwt-widgets.svg
  26. 4
    1
      documentation/datamodel/datamodel-container.asciidoc
  27. 5
    7
      documentation/getting-started/chapter-getting-started.asciidoc
  28. 34
    0
      documentation/getting-started/getting-started-archetypes.asciidoc
  29. 0
    120
      documentation/getting-started/getting-started-eclipse.asciidoc
  30. 0
    238
      documentation/getting-started/getting-started-environment.asciidoc
  31. 220
    55
      documentation/getting-started/getting-started-first-project.asciidoc
  32. 27
    85
      documentation/getting-started/getting-started-idea.asciidoc
  33. 40
    57
      documentation/getting-started/getting-started-libraries.asciidoc
  34. 19
    26
      documentation/getting-started/getting-started-maven.asciidoc
  35. 78
    33
      documentation/getting-started/getting-started-netbeans.asciidoc
  36. 22
    0
      documentation/getting-started/getting-started-overview.adoc
  37. 9
    22
      documentation/getting-started/getting-started-package.asciidoc
  38. 1
    1
      documentation/getting-started/getting-started-scala.asciidoc
  39. BIN
      documentation/getting-started/img/debuggingMyProject.png
  40. BIN
      documentation/getting-started/img/myproject-archetype-selection.png
  41. BIN
      documentation/getting-started/img/myproject-compilewidgetset.png
  42. BIN
      documentation/getting-started/img/myproject-created-annotated-hi.png
  43. BIN
      documentation/getting-started/img/myproject-created.png
  44. BIN
      documentation/getting-started/img/myproject-ivy-created.png
  45. BIN
      documentation/getting-started/img/myproject-ivy-new-vaadin.png
  46. BIN
      documentation/getting-started/img/myproject-ivy-settings.png
  47. BIN
      documentation/getting-started/img/myproject-ivy-vaadin.png
  48. BIN
      documentation/getting-started/img/myproject-ivy-web.png
  49. BIN
      documentation/getting-started/img/myproject-new-vaadin.png
  50. BIN
      documentation/getting-started/img/myproject-settings.png
  51. BIN
      documentation/getting-started/img/netbeans-created-annotated-hi.png
  52. BIN
      documentation/getting-started/img/netbeans-newproject-1.png
  53. BIN
      documentation/getting-started/img/netbeans-newproject-2.png
  54. BIN
      documentation/getting-started/img/netbeans-newproject-created.png
  55. BIN
      documentation/getting-started/img/netbeans-server.png
  56. BIN
      documentation/getting-started/img/runningMyProject.png
  57. BIN
      documentation/getting-started/img/tomcat-startserver-1.png
  58. BIN
      documentation/getting-started/img/tomcat-startserver-2.png
  59. BIN
      documentation/getting-started/img/tomcat-startserver-3.png
  60. BIN
      documentation/getting-started/img/tomcat-startserver-4.png
  61. BIN
      documentation/getting-started/img/tomcat-startserver-5.png
  62. 13
    0
      documentation/getting-started/original-drawings/Makefile
  63. 363
    0
      documentation/getting-started/original-drawings/myproject-created-annotated.svg
  64. 324
    0
      documentation/getting-started/original-drawings/netbeans-created-annotated.svg
  65. 2
    2
      documentation/gwt/gwt-rpc.asciidoc
  66. 1
    1
      documentation/gwt/gwt-shared-state.asciidoc
  67. BIN
      documentation/img/createMavenProject.jpg
  68. BIN
      documentation/img/debugAsMavenBuild.jpg
  69. BIN
      documentation/img/debugAsMavenBuild2.jpg
  70. BIN
      documentation/img/debugAsMavenBuildAddSources.jpg
  71. BIN
      documentation/img/debugInBreakPointVariable.jpg
  72. BIN
      documentation/img/eclipseWithoutJdkError.jpg
  73. BIN
      documentation/img/finalUI.jpg
  74. BIN
      documentation/img/pluginEclipseMarketPlace2.jpg
  75. BIN
      documentation/img/projectWizard2-add.jpg
  76. BIN
      documentation/img/projectWizard2-top.jpg
  77. BIN
      documentation/img/projectWizard2.jpg
  78. BIN
      documentation/img/projectWizard3.jpg
  79. BIN
      documentation/img/projectWizardAddArchetype-crop.jpg
  80. BIN
      documentation/img/projectWizardAddArchetype.jpg
  81. 20
    0
      documentation/installing/chapter-installing.asciidoc
  82. BIN
      documentation/installing/img/clearall-icon.png
  83. 0
    0
      documentation/installing/img/firebug.png
  84. 0
    0
      documentation/installing/img/idea-server-1.png
  85. 0
    0
      documentation/installing/img/idea-server-2.png
  86. BIN
      documentation/installing/img/installation-eclipse-hi.png
  87. BIN
      documentation/installing/img/installation-netbeans-hi.png
  88. BIN
      documentation/installing/img/installation-steps-hi.png
  89. BIN
      documentation/installing/img/installing-netbeans-1.png
  90. BIN
      documentation/installing/img/installing-netbeans-2.png
  91. BIN
      documentation/installing/img/installing-netbeans-3.png
  92. BIN
      documentation/installing/img/installing-netbeans-4.png
  93. BIN
      documentation/installing/img/installing-netbeans-5.png
  94. BIN
      documentation/installing/img/installing-netbeans-plugin-1.png
  95. BIN
      documentation/installing/img/installing-netbeans-plugin-2.png
  96. BIN
      documentation/installing/img/installing-netbeans-plugin-3.png
  97. BIN
      documentation/installing/img/notification-center-overview.png
  98. BIN
      documentation/installing/img/notification-center-popup.png
  99. 0
    0
      documentation/installing/img/plugin-install-addsite.png
  100. 0
    0
      documentation/installing/img/plugin-install-available.png

+ 14
- 0
WebContent/WEB-INF/web.xml View File

@@ -109,6 +109,15 @@
</init-param>
<async-supported>true</async-supported>
</servlet>
<servlet>
<servlet-name>RPCLogger</servlet-name>
<servlet-class>com.vaadin.tests.rpclogger.RPCLoggerServlet</servlet-class>
<init-param>
<param-name>ui</param-name>
<param-value>com.vaadin.tests.rpclogger.RPCLoggerUI</param-value>
</init-param>
<async-supported>true</async-supported>
</servlet>

<servlet>
<!-- This servlet is a separate instance for the sole purpose of
@@ -202,6 +211,11 @@
<url-pattern>/commerror/*</url-pattern>
</servlet-mapping>

<servlet-mapping>
<servlet-name>RPCLogger</servlet-name>
<url-pattern>/rpclogger/*</url-pattern>
</servlet-mapping>

<servlet-mapping>
<servlet-name>VaadinStaticFiles</servlet-name>
<url-pattern>/VAADIN/*</url-pattern>

+ 0
- 20
all/src/main/resources/WebContent/licenses/the-json-license.txt View File

@@ -1,20 +0,0 @@
Copyright (c) 2002 JSON.org

Permission is hereby granted, free of charge, to any person obtaining a copy of
this software and associated documentation files (the "Software"), to deal in
the Software without restriction, including without limitation the rights to
use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
the Software, and to permit persons to whom the Software is furnished to do so,
subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

The Software shall be used for Good, not Evil.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

+ 4
- 0
all/src/main/templates/release-notes.html View File

@@ -140,6 +140,10 @@
cause problems with external libraries compiled against said versions.</li>
<li>Declarative format is now using "vaadin-" as a default prefix instead of the "v-" prefix used in 7.5.
This default can be changed in deployment configuration.</li>
<li>The annotations @PreserveOnRefresh, @Push, @Theme, @Title, @VaadinServletConfiguration and @Widgetset now use
@Inherited. The annotation is also looked up in extended interfaces for backwards compatibility.</li>
<li>Server-side timings of request processing are only sent to the client when not in production mode. Using the
timings in TestBench tests requires the server not to be in production mode.</li>
</ul>
<h3 id="knownissues">Known Issues and Limitations</h3>
<ul>

+ 25
- 1
client-compiler/src/main/java/com/vaadin/server/widgetsetutils/metadata/RendererVisitor.java View File

@@ -22,8 +22,11 @@ import com.google.gwt.core.ext.typeinfo.JClassType;
import com.google.gwt.core.ext.typeinfo.JMethod;
import com.google.gwt.core.ext.typeinfo.JParameterizedType;
import com.google.gwt.core.ext.typeinfo.JType;
import com.google.gwt.core.ext.typeinfo.NotFoundException;
import com.vaadin.client.connectors.AbstractRendererConnector;

import elemental.json.JsonValue;

/**
* Generates type data for renderer connectors.
* <ul>
@@ -86,12 +89,33 @@ public class RendererVisitor extends TypeVisitor {
JType presentationType = getPresentationType(type, logger);
bundle.setPresentationType(type, presentationType);

bundle.setNeedsSerialize(presentationType);
if (!hasCustomDecodeMethod(type, logger)) {
bundle.setNeedsSerialize(presentationType);
}

logger.log(Type.DEBUG, "Presentation type of " + type + " is "
+ presentationType);
}

private static boolean hasCustomDecodeMethod(JClassType type,
TreeLogger logger) throws UnableToCompleteException {
try {
JMethod decodeMethod = ConnectorBundle.findInheritedMethod(type,
"decode",
type.getOracle().getType(JsonValue.class.getName()));
if (decodeMethod == null) {
throw new NotFoundException();
}

return !decodeMethod.getEnclosingType().getQualifiedSourceName()
.equals(AbstractRendererConnector.class.getName());
} catch (NotFoundException e) {
logger.log(Type.ERROR, "Can't find decode method for renderer "
+ type, e);
throw new UnableToCompleteException();
}
}

private static JType getPresentationType(JClassType type, TreeLogger logger)
throws UnableToCompleteException {
JClassType originalType = type;

+ 6
- 3
client/src/main/java/com/vaadin/client/ApplicationConnection.java View File

@@ -42,7 +42,6 @@ import com.google.gwt.user.client.Timer;
import com.google.gwt.user.client.ui.HasWidgets;
import com.google.gwt.user.client.ui.Widget;
import com.vaadin.client.ApplicationConfiguration.ErrorMessage;
import com.vaadin.client.ApplicationConnection.ApplicationStoppedEvent;
import com.vaadin.client.ResourceLoader.ResourceLoadEvent;
import com.vaadin.client.ResourceLoader.ResourceLoadListener;
import com.vaadin.client.communication.ConnectionStateHandler;
@@ -486,12 +485,16 @@ public class ApplicationConnection implements HasHandlers {
}

client.getProfilingData = $entry(function() {
var smh = ap.@com.vaadin.client.ApplicationConnection::getMessageHandler();
var smh = ap.@com.vaadin.client.ApplicationConnection::getMessageHandler()();
var pd = [
smh.@com.vaadin.client.communication.MessageHandler::lastProcessingTime,
smh.@com.vaadin.client.communication.MessageHandler::totalProcessingTime
];
pd = pd.concat(smh.@com.vaadin.client.communication.MessageHandler::serverTimingInfo);
if (null != smh.@com.vaadin.client.communication.MessageHandler::serverTimingInfo) {
pd = pd.concat(smh.@com.vaadin.client.communication.MessageHandler::serverTimingInfo);
} else {
pd = pd.concat(-1, -1);
}
pd[pd.length] = smh.@com.vaadin.client.communication.MessageHandler::bootstrapTime;
return pd;
});

+ 12
- 8
client/src/main/java/com/vaadin/client/connectors/JavaScriptRendererConnector.java View File

@@ -42,9 +42,11 @@ import elemental.json.JsonValue;
* @since 7.4
* @author Vaadin Ltd
*/
// This is really typed to <JsonValue>, but because of the way native strings
// are not always instanceof JsonValue, we need to accept Object
@Connect(AbstractJavaScriptRenderer.class)
public class JavaScriptRendererConnector extends
AbstractRendererConnector<JsonValue> implements
AbstractRendererConnector<Object> implements
HasJavaScriptConnectorHelper {
private final JavaScriptConnectorHelper helper = new JavaScriptConnectorHelper(
this);
@@ -131,7 +133,7 @@ public class JavaScriptRendererConnector extends
}-*/;

@Override
protected Renderer<JsonValue> createRenderer() {
protected Renderer<Object> createRenderer() {
helper.ensureJavascriptInited();

if (!hasFunction("render")) {
@@ -146,11 +148,13 @@ public class JavaScriptRendererConnector extends
final boolean hasGetConsumedEvents = hasFunction("getConsumedEvents");
final boolean hasOnBrowserEvent = hasFunction("onBrowserEvent");

return new ComplexRenderer<JsonValue>() {
return new ComplexRenderer<Object>() {
@Override
public void render(RendererCellReference cell, JsonValue data) {
render(helper.getConnectorWrapper(), getJsCell(cell),
Util.json2jso(data));
public void render(RendererCellReference cell, Object data) {
if (data instanceof JsonValue) {
data = Util.json2jso((JsonValue) data);
}
render(helper.getConnectorWrapper(), getJsCell(cell), data);
}

private JavaScriptObject getJsCell(CellReference<?> cell) {
@@ -159,7 +163,7 @@ public class JavaScriptRendererConnector extends
}

public native void render(JavaScriptObject wrapper,
JavaScriptObject cell, JavaScriptObject data)
JavaScriptObject cell, Object data)
/*-{
wrapper.render(cell, data);
}-*/;
@@ -262,7 +266,7 @@ public class JavaScriptRendererConnector extends
}

@Override
public JsonValue decode(JsonValue value) {
public Object decode(JsonValue value) {
// Let the js logic decode the raw json that the server sent
return value;
}

+ 23
- 19
client/src/main/java/com/vaadin/client/ui/VDragAndDropWrapper.java View File

@@ -45,6 +45,7 @@ import com.vaadin.client.MouseEventDetailsBuilder;
import com.vaadin.client.Util;
import com.vaadin.client.VConsole;
import com.vaadin.client.ValueMap;
import com.vaadin.client.WidgetUtil;
import com.vaadin.client.ui.dd.DDUtil;
import com.vaadin.client.ui.dd.VAbstractDropHandler;
import com.vaadin.client.ui.dd.VAcceptCallback;
@@ -106,25 +107,12 @@ public class VDragAndDropWrapper extends VCustomComponent implements
final int deltaX = Math.abs(event.getClientX() - startX);
final int deltaY = Math.abs(event.getClientY() - startY);
if ((deltaX + deltaY) < MIN_PX_DELTA) {
setFocusOnLastElement(event);
Element clickedElement = WidgetUtil.getElementFromPoint(
event.getClientX(), event.getClientY());
clickedElement.focus();
}
}

private void setFocusOnLastElement(final MouseUpEvent event) {
Element el = event.getRelativeElement();
getLastChildElement(el).focus();
}

private Element getLastChildElement(Element el) {
do {
if (el == null) {
break;
}
el = el.getFirstChildElement();
} while (el.getFirstChildElement() != null);
return el;
}

}, MouseUpEvent.getType());

addDomHandler(new TouchStartHandler() {
@@ -196,6 +184,9 @@ public class VDragAndDropWrapper extends VCustomComponent implements
/** For internal use only. May be removed or replaced in the future. */
public VAbstractDropHandler dropHandler;

/** For internal use only. May be removed or replaced in the future. */
public UploadHandler uploadHandler;

private VDragEvent vaadinDragEvent;

int filecounter = 0;
@@ -239,9 +230,9 @@ public class VDragAndDropWrapper extends VCustomComponent implements
@Override
public void onReadyStateChange(XMLHttpRequest xhr) {
if (xhr.getReadyState() == XMLHttpRequest.DONE) {
// visit server for possible
// variable changes
client.sendPendingVariableChanges();
// #19616 Notify the upload handler that the request is complete
// and let it poll the server for changes.
uploadHandler.uploadDone();
uploading = false;
startNextUpload();
xhr.clearOnReadyStateChange();
@@ -727,4 +718,17 @@ public class VDragAndDropWrapper extends VCustomComponent implements
return dragImageWidget;
}

/**
* Internal client side interface used by the connector and the widget for
* the drag and drop wrapper to signal the completion of an HTML5 file
* upload.
*
* @since 7.6.4
*/
public interface UploadHandler {

public void uploadDone();

}

}

+ 20
- 0
client/src/main/java/com/vaadin/client/ui/VFilterSelect.java View File

@@ -1131,6 +1131,26 @@ public class VFilterSelect extends Composite implements Field, KeyDownHandler,
*/
public class FilterSelectTextBox extends TextBox {

/**
* Creates a new filter select text box.
*
* @since 7.6.4
*/
public FilterSelectTextBox() {
/*-
* Stop the browser from showing its own suggestion popup.
*
* Using an invalid value instead of "off" as suggested by
* https://developer.mozilla.org/en-US/docs/Web/Security/Securing_your_site/Turning_off_form_autocompletion
*
* Leaving the non-standard Safari options autocapitalize and
* autocorrect untouched since those do not interfere in the same
* way, and they might be useful in a combo box where new items are
* allowed.
*/
getElement().setAttribute("autocomplete", "nope");
}

/**
* Overridden to avoid selecting text when text input is disabled
*/

+ 15
- 1
client/src/main/java/com/vaadin/client/ui/draganddropwrapper/DragAndDropWrapperConnector.java View File

@@ -30,11 +30,18 @@ import com.vaadin.client.ui.VDragAndDropWrapper;
import com.vaadin.client.ui.customcomponent.CustomComponentConnector;
import com.vaadin.shared.ui.Connect;
import com.vaadin.shared.ui.draganddropwrapper.DragAndDropWrapperConstants;
import com.vaadin.shared.ui.draganddropwrapper.DragAndDropWrapperServerRpc;
import com.vaadin.ui.DragAndDropWrapper;

@Connect(DragAndDropWrapper.class)
public class DragAndDropWrapperConnector extends CustomComponentConnector
implements Paintable {
implements Paintable, VDragAndDropWrapper.UploadHandler {

@Override
protected void init() {
super.init();
getWidget().uploadHandler = this;
}

@Override
public void updateFromUIDL(UIDL uidl, ApplicationConnection client) {
@@ -121,4 +128,11 @@ public class DragAndDropWrapperConnector extends CustomComponentConnector
private static Logger getLogger() {
return Logger.getLogger(DragAndDropWrapperConnector.class.getName());
}

@Override
public void uploadDone() {
// #19616 RPC to poll the server for changes
getRpcProxy(DragAndDropWrapperServerRpc.class).poll();
}

}

+ 19
- 14
client/src/main/java/com/vaadin/client/ui/table/TableConnector.java View File

@@ -180,20 +180,6 @@ public class TableConnector extends AbstractFieldConnector implements
return;
}

getWidget().enabled = isEnabled();

if (BrowserInfo.get().isIE8() && !getWidget().enabled) {
/*
* The disabled shim will not cover the table body if it is relative
* in IE8. See #7324
*/
getWidget().scrollBodyPanel.getElement().getStyle()
.setPosition(Position.STATIC);
} else if (BrowserInfo.get().isIE8()) {
getWidget().scrollBodyPanel.getElement().getStyle()
.setPosition(Position.RELATIVE);
}

getWidget().paintableId = uidl.getStringAttribute("id");
getWidget().immediate = getState().immediate;

@@ -398,6 +384,25 @@ public class TableConnector extends AbstractFieldConnector implements
getWidget().collapsibleMenuContent = getState().collapseMenuContent;
}

@Override
public void updateEnabledState(boolean enabledState) {
super.updateEnabledState(enabledState);
getWidget().enabled = isEnabled();

if (BrowserInfo.get().isIE8() && !getWidget().enabled) {
/*
* The disabled shim will not cover the table body if it is relative
* in IE8. See #7324
*/
getWidget().scrollBodyPanel.getElement().getStyle()
.setPosition(Position.STATIC);
} else if (BrowserInfo.get().isIE8()) {
getWidget().scrollBodyPanel.getElement().getStyle()
.setPosition(Position.RELATIVE);
}

}

@Override
public VScrollTable getWidget() {
return (VScrollTable) super.getWidget();

+ 2
- 2
client/src/main/java/com/vaadin/client/widget/escalator/ScrollbarBundle.java View File

@@ -558,7 +558,7 @@ public abstract class ScrollbarBundle implements DeferredWorker {
*/
public final double getScrollPos() {
assert internalGetScrollPos() == toInt32(scrollPos) : "calculated scroll position ("
+ toInt32(scrollPos)
+ scrollPos
+ ") did not match the DOM element scroll position ("
+ internalGetScrollPos() + ")";
return scrollPos;
@@ -793,7 +793,7 @@ public abstract class ScrollbarBundle implements DeferredWorker {
*/
private static native int toInt32(double val)
/*-{
return val | 0;
return Math.round(val) | 0;
}-*/;

/**

+ 9
- 0
client/src/main/java/com/vaadin/client/widgets/Escalator.java View File

@@ -3104,6 +3104,15 @@ public class Escalator extends Widget implements RequiresResize,
moveAndUpdateEscalatorRows(allEscalatorRows, 0,
logicalTargetIndex);

/*
* moveAndUpdateEscalatorRows recalculates the rows, but
* logical top row index bookkeeping is handled in this
* method.
*
* TODO: Redesign how to keep it easy to track this.
*/
updateTopRowLogicalIndex(-removedLogicalInside.length());

/*
* Scrolling the body to the correct location will be
* fixed automatically. Because the amount of rows is

+ 5
- 1
client/src/main/java/com/vaadin/client/widgets/Grid.java View File

@@ -2527,7 +2527,6 @@ public class Grid<T> extends ResizeComposite implements
if (rowIndex == rowWithFocus
&& cellFocusRange.contains(columnIndexDOM)
&& container == this.containerWithFocus) {
refreshRow(rowWithFocus);
return;
}

@@ -8491,6 +8490,11 @@ public class Grid<T> extends ResizeComposite implements
if (isEditorActive()) {
editor.updateVerticalScrollPosition();
}

// if there is a resize, we need to refresh the body to avoid an
// off-by-one error which occurs when the user scrolls all the
// way to the bottom.
refreshBody();
}
});
}

+ 17
- 23
documentation/advanced/advanced-architecture.asciidoc View File

@@ -29,14 +29,13 @@ model and the "business logic" of the application, typically as beans or POJOs.
A user interface is built on top of the domain model, in our context with the
Vaadin Framework. The Vaadin user interface could be bound directly to the data
model through the Vaadin Data Model, described in
<<dummy/../../../framework/datamodel/datamodel-overview.asciidoc#datamodel.overview,"Binding
Components to Data">>. Beneath the domain model lies a data store, such as a
relational database. The dependencies between the layers are restricted so that
a higher layer may depend on a lower one, but never the other way around.
<<dummy/../../../framework/datamodel/datamodel-overview.asciidoc#datamodel.overview,"Binding Components to Data">>.
Beneath the domain model lies a data store, such as a relational database.
The dependencies between the layers are restricted so that a higher layer may depend on a lower one, but never the other way around.

[[figure.advanced.architecture.layering]]
.Three-Layer Architecture
image::img/three-layer-architecture-hi.png[]
.Three-layer architecture
image::img/three-layer-architecture-hi.png[width=80%]

An __application layer__ (or __service layer__) is often distinguished from the
domain layer, offering the domain logic as a service, which can be used by the
@@ -65,8 +64,8 @@ implementation better than in MVC and allows easier unit testing of the
presenter and model.

[[figure.advanced.architecture.mvp]]
.Model-View-Presenter Pattern
image::img/mvp-pattern-hi.png[]
.Model-View-Presenter pattern
image::img/mvp-pattern-hi.png[width=60%]

<<figure.advanced.architecture.mvp>> illustrates the MVP pattern with a simple
calculator. The domain model is realized in the [classname]#Calculator# class,
@@ -88,10 +87,10 @@ the following example:
// Create the model and the Vaadin view implementation
CalculatorModel model = new CalculatorModel();
CalculatorViewImpl view = new CalculatorViewImpl();
// The presenter binds the model and view together
new CalculatorPresenter(model, view);
// The view implementation is a Vaadin component
layout.addComponent(view);
----
@@ -111,7 +110,7 @@ for manipulating it.
/** The model **/
class CalculatorModel {
private double value = 0.0;
public void clear() {
value = 0.0;
}
@@ -128,11 +127,11 @@ class CalculatorModel {
if (arg != 0.0)
value /= arg;
}
public double getValue() {
return value;
}
public void setValue(double value) {
this.value = value;
}
@@ -181,7 +180,7 @@ class CalculatorViewImpl extends CustomComponent
// Create a result label that spans over all
// the 4 columns in the first row
layout.addComponent(display, 0, 0, 3, 0);
// The operations for the calculator in the order
// they appear on the screen (left to right, top
// to bottom)
@@ -196,7 +195,7 @@ class CalculatorViewImpl extends CustomComponent

setCompositionRoot(layout);
}
public void setDisplay(double value) {
display.setValue(Double.toString(value));
}
@@ -239,13 +238,13 @@ class CalculatorPresenter

private double current = 0.0;
private char lastOperationRequested = 'C';
public CalculatorPresenter(CalculatorModel model,
CalculatorView view) {
this.model = model;
this.view = view;
view.setDisplay(current);
view.setDisplay(current);
view.addListener(this);
}

@@ -291,8 +290,3 @@ class CalculatorPresenter
In the above example, we held some state information in the presenter.
Alternatively, we could have had an intermediate controller between the
presenter and the model to handle the low-level button logic.






+ 13
- 12
documentation/advanced/advanced-debug.asciidoc View File

@@ -14,14 +14,20 @@ debug features for Vaadin developers:
* Debug Window
* Display debug information in the Debug Window and server console
* On-the-fly compilation of Sass themes
* Timings of server calls for Vaadin TestBench

It is recommended to always deploy production applications in production mode
for security reasons.

[[advanced.debug.mode]]
== Enabling the Debug Mode

The debug mode is enabled and production mode disabled by default in the UI
templates created with the Eclipse plugin or the Maven archetypes. The debug
mode can be enabled by giving a [parameter]#productionMode=false# parameter to
the Vaadin servlet configuration:
templates created with the Eclipse plugin or the Maven archetypes. Some
archetypes have a separate module and profile for producing a production mode
application. The debug mode can be enabled by giving a
[parameter]#productionMode=false# parameter to the Vaadin servlet
configuration:

[subs="normal"]
----
@@ -137,8 +143,7 @@ properties.

To view the HTML structure and CSS styles in more detail, you can use Firebug in
Firefox, or the Developer Tools in Chrome, as described in
<<dummy/../../../framework/getting-started/getting-started-environment#getting-started.environment.firefox,"Firefox
and Firebug">>. Firefox also has a built-in feature for inspecting HTML and CSS.
<<dummy/../../../framework/installing/installing-other#installing.other.firefox,"Firefox and Firebug">>. Firefox also has a built-in feature for inspecting HTML and CSS.


[[advanced.debug.hierarchy.analyze]]
@@ -149,8 +154,8 @@ currently visible UI and makes a report of possible layout related problems. All
detected layout problems are displayed in the log and also printed to the
console.

[[]]
.Debug Window Showing the Result of Layout Analysis.
[[figure.advanced.debug.hierarchy.analyze]]
.Debug window showing the result of layout analysis.
image::img/debug-window-analyze-layouts.png[]

Clicking on a reported problem highlights the component with the problem in the
@@ -161,7 +166,7 @@ relative size inside a container (layout) that has undefined size in the
particular direction (height or width). For example, adding a
[classname]#Button# with 100% width inside a [classname]#VerticalLayout# with
undefined width. In such a case, the error would look as shown in
<<dummy/../../../framework//-overview.asciidoc#figure.advanced.debug.hierarchy.analyze,"">>.
<<figure.advanced.debug.hierarchy.analyze>>.

[classname]#CustomLayout# components can not be analyzed in the same way as
other layouts. For custom layouts, the button analyzes all contained
@@ -202,7 +207,3 @@ The [guilabel]#Menu# tab in the window opens a sub-menu to select various
settings. Here you can also launch the GWT SuperDevMode, as described in
<<dummy/../../../framework/clientside/clientside-debugging#clientside.debugging,"Debugging
Client-Side Code">>.





BIN
documentation/advanced/img/three-layer-architecture-hi.png View File


+ 13
- 0
documentation/advanced/original-drawings/Makefile View File

@@ -0,0 +1,13 @@
IMAGES = three-layer-architecture

SRCIMAGES := $(foreach file, $(IMAGES), $(file).svg)
TRGIMAGES_HI := $(foreach file, $(IMAGES), ../img/$(file)-hi.png)
TRGIMAGES_LO := $(foreach file, $(IMAGES), ../img/$(file)-lo.png)

images: $(TRGIMAGES_HI) FORCE
# Just do low now $(TRGIMAGES_LO)

$(TRGIMAGES_HI): ../img/%-hi.png: %.svg
inkscape --export-png $@ --export-dpi=150 --export-area-drawing $<

FORCE:

+ 1069
- 0
documentation/advanced/original-drawings/three-layer-architecture.svg
File diff suppressed because it is too large
View File


+ 25
- 35
documentation/application/application-declarative.asciidoc View File

@@ -29,7 +29,6 @@ See the http://demo.vaadin.com/book-examples-vaadin7/book#layout.orderedlayout.b

You could define it declaractively with the following equivalent design:


[source, html]
----
<vaadin-vertical-layout>
@@ -38,7 +37,9 @@ You could define it declaractively with the following equivalent design:
<vaadin-text-field caption="Postal code"/>
</vaadin-vertical-layout>
----
ifdef::web[]
See the http://demo.vaadin.com/book-examples-vaadin7/book#layout.orderedlayout.basic[on-line example, window="_blank"].
endif::web[]

Declarative designs can be crafted by hand, but are most conveniently created
with the Vaadin Designer.
@@ -52,7 +53,7 @@ handling user interaction events.

A design is an HTML document with custom elements for representing components
and their configuration. A design has a single root component inside the HTML
body element. Enclosing [literal]#++<html>++#, [literal]#++<head>++#,
body element. Enclosing [literal]#++<html>++#, [literal]#++<head>++#, and
[literal]#++<body>++# are optional, but necessary if you need to make namespace
definitions for custom components. Other regular HTML elements may not be used
in the file, except inside components that specifically accept HTML content.
@@ -61,7 +62,6 @@ In a design, each nested element corresponds to a Vaadin component in a
component tree. Components can have explicitly given IDs to enable binding them
to variables in the Java code, as well as optional attributes.


[source, html]
----
<!DOCTYPE html>
@@ -69,13 +69,14 @@ to variables in the Java code, as well as optional attributes.
<body>
<vaadin-vertical-layout size-full>
<!-- Label with HTML content -->
<vaadin-label><b>Hello!</b> - How are you?</vaadin-label>
<vaadin-label><b>Hello!</b> -
How are you?</vaadin-label>

<vaadin-horizontal-layout size-full :expand>
<vaadin-tree _id="mytree" caption="My Tree"
width-auto height-full/>
<vaadin-table _id="mytable" caption="My Table"
size-full :expand/>
<vaadin-tree _id="mytree" caption="My Tree"
width-auto height-full/>
<vaadin-table _id="mytable" caption="My Table"
size-full :expand/>
</vaadin-horizontal-layout>
</vaadin-vertical-layout>
</body>
@@ -95,15 +96,11 @@ Hierarchical UI">>.
[[application.declarative.elements]]
== Component Elements

HTML elements of the declarative syntax are directly mapped to Vaadin components
according to their Java class names. The tag of a component element has a
namespace prefix separated by a dash. Vaadin core components, which are defined
in the [package]#com.vaadin.ui# package, have [literal]#++vaadin-++# prefix. The rest
of an element tag is determined from the Java class name of the component, by
making it lower-case, while adding a dash ( [literal]#++-++#) before every
previously upper-case letter as a word separator. For example,
[classname]#ComboBox# component has declarative element tag
[literal]#++<vaadin-combo-box>++#.
HTML elements of the declarative syntax are directly mapped to Vaadin components according to their Java class names.
The tag of a component element has a namespace prefix separated by a dash.
Vaadin core components, which are defined in the [package]#com.vaadin.ui# package, have [literal]#++vaadin-++# prefix.
The rest of an element tag is determined from the Java class name of the component, by making it lower-case, while adding a dash (`-`) before every previously upper-case letter as a word separator.
For example, [classname]#ComboBox# component has declarative element tag [vaadinelement]#vaadin-combo-box#.

[[application.declarative.elements.prefix]]
=== Component Prefix to Package Mapping
@@ -113,15 +110,14 @@ composite components, and add-on components. To do so, you need to define a
mapping from an element prefix to the Java package of the component. The prefix
is used as a sort of a namespace.

The mappings are defined in [literal]#++<meta name="package-mapping" ...>++#
The mappings are defined in `<meta name="package-mapping" ...>`
elements in the HTML head. A [parameter]#content# attribute defines a mapping,
in notation with a prefix separated from the corresponding Java package name
with a colon, such as " [literal]#++my:com.example.myapp++#".
with a colon, such as `my:com.example.myapp`.

For example, consider that you have the following composite class
[classname]#com.example.myapp.ExampleComponent#:


[source, java]
----
package com.example.myapp;
@@ -140,12 +136,14 @@ You would make the package prefix mapping and then use the component as follows:
&lt;!DOCTYPE html&gt;
&lt;html&gt;
&lt;head&gt;
**&lt;meta name="package-mapping" content="my:com.example.myapp" /&gt;**
**&lt;meta name="package-mapping"
content="my:com.example.myapp" /&gt;**
&lt;/head&gt;

&lt;body&gt;
&lt;vaadin-vertical-layout&gt;
&lt;vaadin-label&gt;&lt;b&gt;Hello!&lt;/b&gt; - How are you?&lt;/vaadin-label&gt;
&lt;vaadin-label&gt;&lt;b&gt;Hello!&lt;/b&gt; -
How are you?&lt;/vaadin-label&gt;

&lt;!-- Use it here --&gt;
**&lt;my-example-component/&gt;**
@@ -221,12 +219,9 @@ Some attribute names are given by a shorthand. For example,
you would set with [methodname]#setAlternateText()#, is given as the
[literal]#++alt++# attribute.

Boolean values must be either " [literal]#++true++#" or " [literal]#++false++#".
The value can be omitted, in which case [literal]#++true++# is assumed. For
example, the [literal]#++enabled++# attribute is boolean and has default value "
[literal]#++true++#", so [literal]#++enabled="true"++# and
[literal]#++enabled++# and equivalent.

Boolean values must be either `true` or `false`.
The value can be omitted, in which case `true` is assumed.
For example, the [literal]#++enabled++# attribute is boolean and has default value "`true`", so `enabled="true"` and `enabled` and equivalent.

[source, html]
----
@@ -317,7 +312,7 @@ For example, the following class could be used to bind the design given earlier.
public class MyViewDesign extends VerticalLayout {
Tree mytree;
Table mytable;
public MyViewDesign() {
Design.read("MyDeclarativeUI.html", this);

@@ -326,7 +321,7 @@ public class MyViewDesign extends VerticalLayout {
TreeExample.createTreeContent());
mytable.setContainerDataSource(
TableExample.generateContent());
// Some interaction
mytree.addItemClickListener(event -> // Java 8
Notification.show("Selected " +
@@ -391,8 +386,3 @@ navigator.addView(MAINVIEW, new MainView());
See
<<dummy/../../../framework/advanced/advanced-navigator#advanced.navigator.urifragment,"Handling
URI Fragment Path">> for a complete example.






+ 18
- 25
documentation/application/application-environment.asciidoc View File

@@ -25,9 +25,9 @@ that form an application. Such a Java web application is typically packaged as a
WAR package for deployment. Server-side Vaadin UIs run as servlets within such a
Java web application. There exists also other kinds of web applications. To
avoid confusion with the general meaning of "web application", we often refer to
Java web applications with the slight misnomer "WAR" in this book.//TODO Vaadin
7: What is the relationship between servlet and
application?
Java web applications with the slight misnomer "WAR" in this book.
// TODO Vaadin 7: What is the relationship between servlet and application?

[[application.environment.war-eclipse]]
== Creating Deployable WAR in Eclipse
@@ -35,41 +35,34 @@ application?
To deploy an application to a web server, you need to create a WAR package. Here
we give the instructions for Eclipse.

. Select "File > Export" and then "Web > WAR File". Or, right-click the project in
the Project Explorer and select "Web > WAR File".
. Select "File > Export" and then "Web > WAR File". Or, right-click the project in the Project Explorer and select "Web > WAR File".

. Select the [guilabel]#Web project# to export. Enter [guilabel]#Destination# file
name ( [filename]#.war#).
. Select the [guilabel]#Web project# to export. Enter [guilabel]#Destination# file name ([filename]#.war#).

. Make any other settings in the dialog, and click [guibutton]#Finish#.



[[application.environment.war]]
== Web Application Contents

The following files are required in a web application in order to run it.

[filename]#WEB-INF/web.xml# (optional with Servlet 3.0):: This is the web application descriptor that defines how the application is
organized, that is, what servlets and such it has. You can refer to any Java
book about the contents of this file. It is not needed if you define the Vaadin
servlet with the [literal]#++@WebServlet++# annotation in Servlet API 3.0.

[filename]#WEB-INF/lib/*.jar# :: These are the Vaadin libraries and their dependencies. They can be found in the
installation package or as loaded by a dependency management system such as
Maven or Ivy.

Your UI classes:: You must include your UI classes either in a JAR file in [filename]#WEB-INF/lib#
or as classes in [filename]#WEB-INF/classes#

Your own theme files (OPTIONAL):: If your application uses a special theme (look and feel), you must include it in
[filename]#VAADIN/themes/themename# directory.
[filename]#WEB-INF/web.xml# (optional with Servlet 3.0)::
his is the web application descriptor that defines how the application is rganized, that is, what servlets and such it has.
You can refer to any Java book about the contents of this file.
It is not needed if you define the Vaadin servlet with the [classname]#@WebServlet# annotation in Servlet API 3.0.

Widget sets (OPTIONAL):: If your application uses a project-specific widget set, it must be compiled in
the [filename]#VAADIN/widgetset/# directory.
[filename]#WEB-INF/lib/*.jar# ::
These are the Vaadin libraries and their dependencies.
They can be found in the installation package or as loaded by a dependency management system such as Maven or Ivy.

Your UI classes::
You must include your UI classes either in a JAR file in [filename]#WEB-INF/lib# or as classes in [filename]#WEB-INF/classes#

Your own theme files (OPTIONAL)::
If your application uses a special theme (look and feel), you must include it in [filename]#VAADIN/themes/themename# directory.

Widget sets (OPTIONAL)::
If your application uses a project-specific widget set, it must be compiled in the [filename]#VAADIN/widgetset/# directory.

[[application.environment.webservlet]]
== Web Servlet Class

+ 1
- 6
documentation/architecture/architecture-overview.asciidoc View File

@@ -63,7 +63,7 @@ User Interface Components/Widgets:: ((("component")))
((("field")))
The user interface of a Vaadin application consists of components that are
created and laid out by the application. Each server-side component has a
client-side counterpart, a " __widget__", by which it is rendered in the browser
client-side counterpart, a __widget__, by which it is rendered in the browser
and with which the user interacts. The client-side widgets can also be used by
client-side applications. The server-side components relay these events to the
application logic. Field components that have a value, which the user can view
@@ -155,8 +155,3 @@ run in the same servlet as the UI code, usually separated at least by a Java
API, possibly as EJBs, or distributed to a remote back-end service. The data
storage is usually distributed to a database management system, and is typically
accessed through a persistence solution, such as JPA.






+ 1
- 6
documentation/clientside/clientside-widget.asciidoc View File

@@ -22,13 +22,12 @@ hierarchy is illustrated in <<figure.clientside.widgets>>. Please see the GWT
API documentation for a complete description of the widget classes.

[[figure.clientside.widgets]]
.GWT Widget Base Class Hierarchy
.GWT widget base class hierarchy
image::img/gwt-widgets-hi.png[]

For example, we could extend the [classname]#Label# widget to display some
custom text.


----
package com.example.myapp.client;

@@ -70,7 +69,3 @@ public class MyEntryPoint implements EntryPoint {
}
}
----





BIN
documentation/clientside/img/gwt-widgets-hi.png View File


+ 13
- 0
documentation/clientside/original-drawings/Makefile View File

@@ -0,0 +1,13 @@
IMAGES = gwt-widgets

SRCIMAGES := $(foreach file, $(IMAGES), $(file).svg)
TRGIMAGES_HI := $(foreach file, $(IMAGES), ../img/$(file)-hi.png)
TRGIMAGES_LO := $(foreach file, $(IMAGES), ../img/$(file)-lo.png)

images: $(TRGIMAGES_HI) FORCE
# Just do low now $(TRGIMAGES_LO)

$(TRGIMAGES_HI): ../img/%-hi.png: %.svg
inkscape --export-png $@ --export-dpi=150 --export-area-drawing $<

FORCE:

documentation/gwt/original-drawings/gwt-widgets.svg → documentation/clientside/original-drawings/gwt-widgets.svg View File


+ 4
- 1
documentation/datamodel/datamodel-container.asciidoc View File

@@ -87,7 +87,10 @@ Creation of the container depends on its type. For some containers, such as the
(columns) as was done above, while some others determine them otherwise. The
definition of a property with [methodname]#addContainerProperty()# requires a
unique property ID, type, and a default value. You can also give
[parameter]#null#.
[parameter]#null#. If the container of a component is replaced and the new container
contains a different set of columns, such as a property with the same ID but a
different data type, the component should be reinitialized. For a table or grid,
it means redefining their columns.

Vaadin has a several built-in in-memory container implementations, such as
[classname]#IndexedContainer# and [classname]#BeanItemContainer#, which are easy

+ 5
- 7
documentation/getting-started/chapter-getting-started.asciidoc View File

@@ -1,18 +1,16 @@
[[getting-started]]
== Getting Started with Vaadin
== Creating a Vaadin Application

This chapter gives practical instructions for installing the recommended
toolchain, the Vaadin libraries and its dependencies, and creating a new Vaadin
project.
This chapter gives practical instructions for creating a Vaadin application project and deploying it to a server to run it. We also consider topics such as debugging.

The instructions are given separately for the Eclipse IDE, NetBeans, and IntelliJ IDEA.

include::getting-started-overview.asciidoc[leveloffset=+2]

include::getting-started-environment.asciidoc[leveloffset=+2]
include::getting-started-overview.adoc[leveloffset=+2]

include::getting-started-libraries.asciidoc[leveloffset=+2]

include::getting-started-eclipse.asciidoc[leveloffset=+2]
include::getting-started-archetypes.asciidoc[leveloffset=+2]

include::getting-started-first-project.asciidoc[leveloffset=+2]


+ 34
- 0
documentation/getting-started/getting-started-archetypes.asciidoc View File

@@ -0,0 +1,34 @@
---
title: Maven Archetypes
order: 30
layout: page
---

[[getting-started.archetypes]]
= Overview of Maven Archetypes

Vaadin currently offers the following Maven archetypes for different kinds of projects:

`vaadin-archetype-application`::
This is a single-module project for simple applications.
It is good for quick demos and trying out Vaadin.
It is also useful when you are experienced with Vaadin and want to build all the aspects of the application yourself.

`vaadin-archetype-application-multimodule`::
A complete Vaadin application development setup.
It features separate production and development profiles.

`vaadin-archetype-application-example`::
An example CRUD web application using multi-module project setup.

`vaadin-archetype-widget`::
A multi-module project for a new Vaadin add-on.
It has two modules: one for the add-on and another for a demo application.

`vaadin-archetype-touchkit`::
A mobile development starter project using Vaadin TouchKit.
See <<dummy/../../../touchkit/mobile-overview#mobile.overview,"Vaadin TouchKit">>.
Notice that this archetype uses the AGPL-licensed version of TouchKit, which requires that your project must also be licensed under the AGPL license.

`vaadin-archetype-liferay-portlet`::
A portlet development setup for the open-source Liferay portal.

+ 0
- 120
documentation/getting-started/getting-started-eclipse.asciidoc View File

@@ -1,120 +0,0 @@
---
title: Vaadin Plugin for Eclipse
order: 4
layout: page
---

[[getting-started.eclipse]]
= Vaadin Plugin for Eclipse

If you are using the Eclipse IDE, using the Vaadin Plugin for Eclipse helps
greatly. The plugin includes wizards for creating new Vaadin-based projects,
themes, and client-side widgets and widget sets. Notice that you can also create
Vaadin projects as Maven projects in Eclipse.

[[getting-started.eclipse.vaadin-plugin]]
== Installing the Vaadin Plugin

You can install the plugin as follows:

. Select "Help > Install New Software...".

. Add the Vaadin plugin update site by clicking [guibutton]#Add...# button.

+
image::img/plugin-install-addsite.png[]

+
Enter a name such as "Vaadin Update Site" and the URL of the update site:
http://vaadin.com/eclipse. If you want or need to use the latest unstable
plugin, which is usually more compatible with development and beta releases of
Vaadin, you can use http://vaadin.com/eclipse/experimental and give it a
distinctive name such as "Vaadin Experimental Site". Then click [guibutton]#OK#.
The Vaadin site should now appear in the [guilabel]#Available Software# window.

. Currently, if using the stable plugin, the [guilabel]#Group items by category# should be enabled. If using the experimental plugin, it should be disabled. This may change in future.
. Select all the Vaadin plugins in the tree.

+
image::img/plugin-install-available.png[]

+
Then, click [guibutton]#Next#.

. Review the installation details and click [guibutton]#Next#.

. Accept or unaccept the license. Finally, click [guibutton]#Finish#.

. After the plugin is installed, Eclipse will ask to restart itself. Click
[guibutton]#Restart#.


More installation instructions for the Eclipse plugin can be found at
http://vaadin.com/eclipse.


[[getting-started.eclipse.update]]
== Updating the Plugins

If you have automatic updates enabled in Eclipse (see "Window > Preferences >
Install/Update > Automatic Updates"), the Vaadin plugin will be updated
automatically along with other plugins. Otherwise, you can update the Vaadin
plugin manually as follows:

. Select "Help > Check for Updates". Eclipse will contact the update sites of the
installed software.

. After the updates are installed, Eclipse will ask to restart itself. Click
[guibutton]#Restart#.


Notice that updating the Vaadin plugin updates only the plugin and __not__ the
Vaadin libraries, which are project specific. See below for instructions for
updating the libraries.


[[getting-started.eclipse.libraryupdate]]
== Updating the Vaadin Libraries

Updating the Vaadin plugin does not update Vaadin libraries. The libraries are
project specific, as a different version might be required for different
projects, so you have to update them separately for each project.

. Open the [filename]#ivy.xml# in an editor in Eclipse.

. Edit the entity definition at the beginning of the file to set the Vaadin
version.


+
[subs="normal"]
----
&lt;!ENTITY vaadin.version "**7.x.x**"&gt;
----
+
You can specify either a fixed version number, as shown in the above example, or
a dynamic revision tag such as [literal]#++latest.release++#. You can find more
information about the dependency declarations in Ivy documentation.

. Right-click the project and select "Ivy > Resolve".

+
Updating the libraries can take several minutes. You can see the progress in the
Eclipse status bar. You can get more details about the progress by clicking the
indicator.

. If you have compiled the widget set for your project, recompile it by clicking
the [guibutton]#Compile Vaadin widgets# button in Eclipse toolbar.

. Stop the integrated Tomcat (or other server) in Eclipse, clear its caches by
right-clicking the server and selecting Clean as well as Clean Tomcat Work
Directory, and restart it.


If you experience problems after updating the libraries, you can try clearing
the Ivy resolution caches by right-clicking the project and selecting "Ivy >
Clean all caches". Then, do the "Ivy > Resolve" and other tasks again.





+ 0
- 238
documentation/getting-started/getting-started-environment.asciidoc View File

@@ -1,238 +0,0 @@
---
title: Setting up the Development Environment
order: 2
layout: page
---

[[getting-started.environment]]
= Setting up the Development Environment

This section guides you step-by-step in setting up a reference development
environment. Vaadin supports a wide variety of tools, so you can use any IDE for
writing the code, almost any Java web server for deploying the application, most
web browsers for using it, and any operating system platform supported by Java.

In this example, we use the following toolchain:

* Windows, Linux, or Mac OS X
* link:http://www.oracle.com/technetwork/java/javase/downloads/index.html[Oracle Java SE 8] (Java 6 or newer is required)
* link:http://www.eclipse.org/downloads/[Eclipse IDE for Java EE Developers]
* link:http://tomcat.apache.org/[Apache Tomcat 8.0 (Core)]
* link:http://www.getfirefox.com/[Mozilla Firefox] browser
* link:http://www.getfirebug.com/[Firebug] debug tool (optional)
* link:http://vaadin.com/download/[Vaadin Framework]

The above reference toolchain is a good choice of tools, but you can use almost
any tools you are comfortable with.

We recommend using Java 8 for Vaadin development, but you need to make sure that
your entire toolchain supports it. A server supporting Servlet 3.0 is
recommended. It is required for using Vaadin CDI, for which also a CDI container
is required, a standard feature in Java EE 6 or newer servers. It is also
required by the Vaadin Spring add-on. Server push can benefit from using
communication modes, such as WebSocket, enabled by features in some latest
servers. For Java EE containers, at least Wildfly, Glassfish, and Apache TomEE
Web Profile are recommended.

[[figure.toolchain]]
.Development Toolchain and Process
image::img/toolchain-hi.png[]

<<figure.toolchain>> illustrates the development toolchain. You develop your
application as an Eclipse project. The project must include, in addition to your
source code, the Vaadin libraries. It can also include project-specific themes.

You need to compile and deploy a project to a web container before you can use
it. You can deploy a project through the Web Tools Platform (WTP) for Eclipse
(included in the Eclipse EE package), which allows automatic deployment of web
applications from Eclipse. You can also deploy a project manually, by creating a
web application archive (WAR) and deploying it to the web container.

[[getting-started.environment.java]]
== Installing Java SDK

Java SDK is required by Vaadin and also by the Eclipse IDE. Vaadin is compatible
with Java 1.6 and later editions. Java EE 7 is required for proper server push
support with WebSockets.

[[getting-started.environment.java.windows]]
=== Windows

. Download Oracle Java SE 8.0 from
link:http://www.oracle.com/technetwork/java/javase/downloads/index.html[http://www.oracle.com/technetwork/java/javase/downloads/index.html]

. Install the Java SDK by running the installer. The default options are fine.



[[getting-started.environment.linux]]
=== Linux / UNIX

Most Linux systems either have JDK preinstalled or allow installing it through a
package management system. Notice however that they have OpenJDK as the default
Java implementation. While it is known to have worked with Vaadin and possibly
also with the development toolchain, we do not especially support it.

Regarding OS X, notice that JDK 1.6 or newer is included in OS X 10.6 and newer.

Otherwise:

. Download Oracle Java SE 8.0 from
link:http://www.oracle.com/technetwork/java/javase/downloads/index.html[http://www.oracle.com/technetwork/java/javase/downloads/]

. Decompress it under a suitable base directory, such as [filename]#/opt#. For
example, for Java SDK, enter (either as root or with [command]#sudo# in Linux):


+
[subs="normal"]
----
[prompt]#+++#+++# [command]#cd# [replaceable]#/opt#
[prompt]#+++#+++# [command]#sh# [replaceable]#(path-to-installation-package)/jdk-8u20-linux-x64.bin#
----
+
and follow the instructions in the installer.

. Set up the [literal]#++JAVA_HOME++# environment variable to point to the Java
installation directory. Also, include the [literal]#++$JAVA_HOME/bin++# in the
[literal]#++PATH++#. How you do that varies by the UNIX variant. For example, in
Linux and using the Bash shell, you would add lines such as the following to the
[filename]#.bashrc# or [filename]#.profile# script in your home directory:


+
----
export JAVA_HOME=/opt/jdk1.8.0_20
export PATH=$PATH:$HOME/bin:$JAVA_HOME/bin
----
+
You could also make the setting system-wide in a file such as
[filename]#/etc/bash.bashrc#, [filename]#/etc/profile#, or an equivalent file.
If you install Apache Ant or Maven, you may also want to set up those in the
path.

+
Settings done in a [filename]#bashrc# file require that you open a new shell
window. Settings done in a [filename]#profile# file require that you log in into
the system. You can, of course, also give the commands in the current shell.




[[getting-started.environment.eclipse]]
== Installing Eclipse IDE

=== Windows

. Download the Eclipse IDE for Java EE Developers from
link:http://www.eclipse.org/downloads/[http://www.eclipse.org/downloads/]

. Decompress the Eclipse IDE package to a suitable directory. You are free to
select any directory and to use any ZIP decompressor, but in this example we
decompress the ZIP file by just double-clicking it and selecting "Extract all
files" task from Windows compressed folder task. In our installation example, we
use [filename]#C:\dev# as the target directory.


Eclipse is now installed in [filename]#C:\dev\eclipse# and can be started from
there (by double clicking eclipse.exe).


=== Linux / OS X / UNIX

We recommend that you install Eclipse manually in Linux and other UNIX variants
as follows.

. Download Eclipse IDE for Java EE Developers from
link:http://www.eclipse.org/downloads/[http://www.eclipse.org/downloads/]

. Decompress the Eclipse package into a suitable base directory. It is important
to make sure that there is no old Eclipse installation in the target directory.
Installing a new version on top of an old one probably renders Eclipse unusable.

. Eclipse should normally be installed as a regular user, as this makes
installation of plugins easier. Eclipse also stores some user settings in the
installation directory. To install the package, enter:


+
[subs="normal"]
----
[prompt]#$# [command]#tar# zxf [replaceable]#(path-to-installation-package)/eclipse-jee-ganymede-SR2-linux-gtk.tar.gz#
----
+
This will extract the package to a subdirectory with the name
[filename]#eclipse#.

. If you wish to enable starting Eclipse from command-line, you need to add the
Eclipse installation directory to your system or user PATH, or make a symbolic
link or script to point to the executable.


An alternative to the above procedure would be to use an Eclipse version
available through the package management system of your operating system. It is,
however, __not recommended__, because you will need write access to the Eclipse
installation directory to install Eclipse plugins, and you may face
incompatibility issues with Eclipse plugins installed by the package management
of the operating system.



[[getting-started.environment.tomcat]]
== Installing Apache Tomcat

Apache Tomcat is a lightweight Java web server suitable for both development and
production. There are many ways to install it, but here we simply decompress the
installation package.

__Apache Tomcat should be installed with user permissions.__ During development,
you will be running Eclipse or some other IDE with user permissions, but
deploying web applications to a Tomcat server that is installed system-wide
requires administrator or root permissions.

. Download the installation package:

+
Apache Tomcat 8.0 (Core Binary Distribution) from http://tomcat.apache.org/

. Decompress Apache Tomcat package to a suitable target directory, such as
[filename]#C:\dev# (Windows) or [filename]#/opt# (Linux or Mac OS X). The Apache
Tomcat home directory will be [filename]#C:\dev\apache-tomcat-8.0.x# or
[filename]#/opt/apache-tomcat-8.0.x#, respectively.



[[getting-started.environment.firefox]]
== Firefox and Firebug

Vaadin supports many web browsers and you can use any of them for development.
If you plan to create a custom theme, customized layouts, or create new
components, we recommend that you use either Firefox together with Firebug or
Google Chrome, which has built-in developer tools similar to Firebug.

[[getting-started.environment.firefox.firebug]]
=== Using Firebug with Vaadin

After installing Firefox, use it to open
link:http://www.getfirebug.com/[http://www.getfirebug.com/]. Follow the
instructions on the site to install the latest stable version of Firebug
available for the browser. You may need to allow Firefox to install the plugin
by clicking the yellow warning bar at the top of the browser window.

After Firebug is installed, it can be enabled at any time from the Firefox
toolbar. <<figure.firebug.calc>> shows Firebug in action.

[[figure.firebug.calc]]
.Firebug Debugger for Firefox
image::img/firebug.png[]

The most important feature in Firebug is inspecting HTML elements. Right-click
on an element and select [guilabel]#Inspect Element with Firebug# to inspect it.
In addition to HTML tree, it also shows the CSS rules matching the element,
which you can use for building themes. You can even edit the CSS styles live, to
experiment with styling.






+ 220
- 55
documentation/getting-started/getting-started-first-project.asciidoc View File

@@ -1,11 +1,11 @@
---
title: Creating and Running a Project with Eclipse
order: 5
title: Creating a Project in Eclipse
order: 100
layout: page
---

[[getting-started.first-project]]
= Creating and Running a Project with Eclipse
= Creating and Running a Project in Eclipse

This section gives instructions for creating a new Eclipse project using the
Vaadin Plugin. The task will include the following steps:
@@ -21,30 +21,33 @@ Vaadin Plugin. The task will include the following steps:

We also show how you can debug the application in the debug mode in Eclipse.

This walkthrough assumes that you have already installed the Vaadin Plugin for
Eclipse and set up your development environment, as instructed in
<<dummy/../../../framework/getting-started/getting-started-environment#getting-started.environment,"Setting
up the Development Environment">>.
This walkthrough assumes that you have already installed the Eclipse IDE, the Vaadin Plugin, and a development server, as instructed in
<<dummy/../../../framework/installing/installing-eclipse#installing.eclipse, "Installing the Eclipse IDE and Plugin">>.

[[getting-started.first-project.creation]]
ifdef::web[]
[[getting-started.first-project.ivy]]
== Creating the Project
endif::web[]

ifdef::web[]
_The following describes the creation of an Ivy project. The upcoming version of the Eclipse plug-in creates Maven projects. For that, see <<getting-started.first-project.creation>>._
endif::web[]

ifdef::web[]
Let us create the first application project with the tools installed in the
previous section. First, launch Eclipse and follow the following steps:

. Start creating a new project by selecting from the menu "File > New > Project...".
. In the [guilabel]#New Project# window that opens, select "Vaadin > Vaadin 7
Project" and click [guibutton]#Next#.

+
image::img/myproject-new-vaadin.png[]
image::img/myproject-ivy-new-vaadin.png[width=70%]

. In the [guilabel]#Vaadin Project# step, you need to set the basic web project
settings. You need to give at least the __project name__ and the runtime; the
default values should be good for the other settings.

+
image::img/myproject-settings.png[]
image::img/myproject-ivy-settings.png[width=70%]

[guilabel]#Project name#:: Give the project a name. The name should be a valid identifier usable
cross-platform as a filename and inside a URL, so using only lower-case
@@ -80,9 +83,7 @@ configuration; the steps listed in this section are for the default servlet
configuration.
ifdef::web[]
See <<dummy/../../../framework/advanced/advanced-gae#advanced.gae,"Google App
Engine Integration">> and
<<dummy/../../../framework/portal/portal-overview.asciidoc#portal.overview,"Portal
Integration">> for instructions regarding the use of Vaadin in the alternative
Engine Integration">> and <<dummy/../../../framework/portal/portal-overview.asciidoc#portal.overview,"Portal Integration">> for instructions regarding the use of Vaadin in the alternative
environments.
endif::web[]

@@ -96,12 +97,9 @@ You can change the version later in the [filename]#ivy.xml#.

[guilabel]#Create TestBench test#:: When enabled, the application stub will include a test case for testing the UI
with Vaadin TestBench, as described in
<<dummy/../../../testbench/testbench-overview.asciidoc#testbench.overview,"Vaadin
TestBench">>. Vaadin TestBench API library will be included in
[filename]#ivy.xml# as a dependency. Vaadin version 7.3 or later is required to
create the stub.


<<dummy/../../../testbench/testbench-overview.asciidoc#testbench.overview,"Vaadin TestBench">>.
Vaadin TestBench API library will be included in [filename]#ivy.xml# as a dependency.
Vaadin version 7.3 or later is required to create the stub.

+
You can click [guibutton]#Finish# here to use the defaults for the rest of the
@@ -112,7 +110,7 @@ settings, or click [guibutton]#Next#.
the settings are pre-filled, and you should normally accept them as they are.

+
image::img/myproject-web.png[]
image::img/myproject-ivy-web.png[]

[guilabel]#Context Root#:: The context root (of the application) identifies the application in the URL used
for accessing it. For example, if the project has a [literal]#++myproject++#
@@ -125,16 +123,13 @@ Eclipse project properties.
(WAR) that is deployed to the web server. The directory is relative to the root
directory of the project.



+
You can just accept the defaults and click [guibutton]#Next#.

. The [guilabel]#Vaadin project# step page has various Vaadin-specific application
settings. If you are trying out Vaadin for the first time, you should not need
. The [guilabel]#Vaadin project# step page has various Vaadin-specific application settings.
If you are trying out Vaadin for the first time, you should not need
to change anything. You can set most of the settings afterwards, except the
creation of the portlet configuration.

+
image::img/myproject-vaadin.png[]

@@ -153,13 +148,9 @@ will create the files needed for running the application in a portal. See
<<dummy/../../../framework/portal/portal-overview.asciidoc#portal.overview,"Portal
Integration">> for more information on portlets.



+
Finally, click [guibutton]#Finish# to create the project.



[[getting-started.first-project.exploring]]
== Exploring the Project

@@ -171,7 +162,7 @@ project hierarchy shown in the Project Explorer is shown in

[[figure.getting-started.first-project.exploring]]
.A New Vaadin Project
image::img/myproject-created.png[]
image::img/myproject-ivy-created.png[scaledwidth=60%]

The Vaadin libraries and other dependencies are managed by Ivy. Notice that the
libraries are not stored under the project folder, even though they are listed
@@ -182,7 +173,6 @@ in the "Java Resources > Libraries > ivy.xml" virtual folder.

The UI class created by the plugin contains the following code:


[source, java]
----
package com.example.myproject;
@@ -227,10 +217,122 @@ In a Servlet 2.3 project, you would have a [filename]#web.xml# deployment
descriptor.

For a more detailed treatment of the deployment, see
<<dummy/../../../framework/application/application-environment#application.environment.web-xml,"Using
a web.xml Deployment Descriptor">>.
<<dummy/../../../framework/application/application-environment#application.environment.web-xml,"Using a web.xml Deployment Descriptor">>.
endif::web[]

[[getting-started.first-project.creation]]
== Creating a Maven Project

ifdef::web[]
_The following describes project creation in the upcoming version of the Eclipse plug-in, which creates Maven rather than Ivy projects.
To use it, you must have installed the experimental version of the plug-in._
endif::web[]

Let us create the first application project with the tools installed in the previous section.
First, launch Eclipse and follow the following steps:

. Start creating a new project by selecting from the menu "File > New > Project...".

. In the [guilabel]#New Project# window that opens, select "Vaadin > Vaadin 7
Project (Maven)" and click [guibutton]#Next#.
+
image::img/myproject-new-vaadin.png[width=70%]

. In the [guilabel]#Select a Maven archetype# step, you need to select the project type.
To create a simple test project, select the [guilabel]#Single-module Application Project#.
+
image::img/myproject-archetype-selection.png[width=70%]

. In the [guilabel]#Specify archetype parameters# step, you need to give at least the [guilabel]#Group Id# and the [guilabel]#Artifact Id#.
The default values should be good for the other settings.
+
image::img/myproject-settings.png[width=70%]

[guilabel]#Group Id#::
Give the project an organization-level identifier, for example, [packagename]#com.example#.
It is used as a prefix for your Java package names, and hence must be a valid Java package name itself.

[guilabel]#Artifact Id#:: Give the project a name, for example, `myproject`.
The artifact ID must be a valid Java sub-package name.

[guilabel]#Version#:: Give the project a Maven compatible version number, for example, `1.0-SNAPSHOT`.
The version number should typically start with two or more integers separated with dots, and
should not contain spaces.

[guilabel]#Package#:: Give the base package name for the project, for example,
[packagename]#com.example.myproject#.
It is by default generated from the group ID and the artifact ID.

[guilabel]#Properties#:: Enter values for archetype-specific properties that control naming of various elements in the created project, such as the UI class name.
+
You can change the version later in the [filename]#pom.xml#.
+
Finally, click [guibutton]#Finish# to create the project.

[[getting-started.first-project.exploring]]
== Exploring the Project

After the [guilabel]#New Project# wizard exits, it has done all the work for you: a UI class skeleton has been written to the [filename]#src# directory.
The project hierarchy shown in the Project Explorer is shown in <<figure.getting-started.first-project.exploring>>.

[[figure.getting-started.first-project.exploring]]
.A new Vaadin Project
image::img/myproject-created-annotated-hi.png[width=80%]

The Vaadin libraries and other dependencies are managed by Maven.
Notice that the libraries are not stored under the project folder, even though they are listed in the "Java Resources > Libraries > Maven Dependencies" virtual folder.

[[getting-started.first-project.exploring.ui]]
=== The UI Class

The UI class created by the plug-in contains the following code:

[source, java]
----
package com.example.myproject;

import com.vaadin.ui.UI;
...

@Theme("mytheme")
@Widgetset("com.example.myproject.MyAppWidgetset")
public class MyUI extends UI {

@Override
protected void init(VaadinRequest vaadinRequest) {
final VerticalLayout layout = new VerticalLayout();

final TextField name = new TextField();
name.setCaption("Type your name here:");

Button button = new Button("Click Me");
button.addClickListener( e -> {
layout.addComponent(new Label("Thanks " + name.getValue()
+ ", it works!"));
});

layout.addComponents(name, button);
layout.setMargin(true);
layout.setSpacing(true);

setContent(layout);
}

@WebServlet(urlPatterns = "/*", name = "MyUIServlet", asyncSupported = true)
@VaadinServletConfiguration(ui = MyUI.class, productionMode = false)
public static class MyUIServlet extends VaadinServlet {
}
}
----

[[getting-started.first-project.widgetset]]
== Compiling the Widget Set and Theme

Before running the project for the first time, select [guilabel]#Compile Widgetset and Theme# from the menu shown in <<figure.getting-started.first-project.compilewidgetset>>.

[[figure.getting-started.first-project.compilewidgetset]]
.Compile Widgetset and Theme Menu
image::img/myproject-compilewidgetset.png[width=50%]

[[getting-started.first-project.coding]]
== Coding Tips for Eclipse
@@ -257,8 +359,7 @@ server-side development.

[[figure.getting-started.first-project.coding.import]]
.Importing Classes Automatically
image::img/codingtips-automaticimports.png[]

image::img/codingtips-automaticimports.png[scaledwidth=80%]

[[getting-started.first-project.server]]
== Setting Up and Starting the Web Server
@@ -272,30 +373,32 @@ web server in Eclipse will fail if the user does not have write permissions to
the configuration and deployment directories under the Tomcat installation
directory.

Follow the following steps.
Follow the following steps:

. Switch to the Servers tab in the lower panel in Eclipse. List of servers should be empty after Eclipse is installed. Right-click on the empty area in the panel and select "New > Server". +
. Switch to the Servers tab in the lower panel in Eclipse. List of servers should be empty after Eclipse is installed. Right-click on the empty area in the panel and select "New > Server".
+
image::img/tomcat-startserver-1.png[]


. Select "Apache > Tomcat v7.0 Server" and set [guilabel]#Server's host name# as [literal]#++localhost++#, which should be the default. If you have only one Tomcat installed, [guilabel]#Server runtime# has only one choice. Click [guibutton]#Next#. +
. Select "Apache > Tomcat v7.0 Server" and set [guilabel]#Server's host name# as [literal]#++localhost++#, which should be the default. If you have only one Tomcat installed, [guilabel]#Server runtime# has only one choice. Click [guibutton]#Next#.
+
image::img/tomcat-startserver-2.png[]


. Add your project to the server by selecting it on the left and clicking [guibutton]#Add# to add it to the configured projects on the right. Click [guibutton]#Finish#. +
. Add your project to the server by selecting it on the left and clicking [guibutton]#Add# to add it to the configured projects on the right. Click [guibutton]#Finish#.
+
image::img/tomcat-startserver-3.png[]


. The server and the project are now installed in Eclipse and are shown in the [guilabel]#Servers# tab. To start the server, right-click on the server and select Debug. To start the server in non-debug mode, select Start. +
. The server and the project are now installed in Eclipse and are shown in the [guilabel]#Servers# tab.
To start the server, right-click on the server and select [guilabel]#Debug#.
To start the server in non-debug mode, select [guilabel]#Start#.
+
image::img/tomcat-startserver-4.png[]

. The server starts and the WebContent directory of the project is published to the server on http://localhost:8080/myproject/. +
. The server starts and the WebContent directory of the project is published to the server on http://localhost:8080/myproject/.
+
image::img/tomcat-startserver-5.png[]




[[getting-started.first-project.run]]
== Running and Debugging

@@ -304,20 +407,82 @@ Starting your application is as easy as selecting [guilabel]#myproject# from the
Eclipse then opens the application in built-in web browser.

.Running a Vaadin Application
image::img/runningMyProject.png[]
image::img/runningMyProject.png[width=60%]

You can insert break points in the Java code by double-clicking on the left
margin bar of the source code window. For example, if you insert a breakpoint in
the [methodname]#buttonClick()# method and click the [guibutton]#What is the
time?# button, Eclipse will ask to switch to the Debug perspective. Debug
perspective will show where the execution stopped at the breakpoint. You can
examine and change the state of the application. To continue execution, select
Resume from Run menu.
examine and change the state of the application.
To continue execution, select [guilabel]#Resume# from [guilabel]#Run# menu.

.Debugging a Vaadin Application
image::img/debuggingMyProject.png[]

Above, we described how to debug a server-side application. Debugging
client-side applications and widgets is described in
<<dummy/../../../framework/clientside/clientside-debugging#clientside.debugging,"Debugging
Client-Side Code">>.
Above, we described how to debug a server-side application.
Debugging client-side applications and widgets is described in
<<dummy/../../../framework/clientside/clientside-debugging#clientside.debugging,"Debugging Client-Side Code">>.

[[getting-started.eclipse.mavenlibraryupdate]]
== Updating the Vaadin Libraries in Maven Projects

Updating the Vaadin plugin does not update Vaadin libraries. The libraries are
project specific, as a different version might be required for different
projects, so you have to update them separately for each project.

. Open the [filename]#pom.xml# in an editor in Eclipse.

. Edit the [propertyname]#vaadin.version# property to set the Vaadin version.
+
Updating the libraries can take several minutes. You can see the progress in the
Eclipse status bar. You can get more details about the progress by clicking the
indicator.

. If you have compiled the widget set for your project, recompile it by clicking
the [guibutton]#Compile Vaadin widgets# button in Eclipse toolbar.

. Stop the integrated Tomcat (or other server) in Eclipse, clear its caches by
right-clicking the server and selecting [guilabel]#Clean# as well as
[guilabel]#Clean Tomcat Work Directory#, and restart it.

If you experience problems after updating the libraries, you can try using
"Maven > Update Project".

[[getting-started.eclipse.libraryupdate]]
== Updating the Vaadin Libraries in Ivy Projects

Updating the Vaadin plugin does not update Vaadin libraries.
The libraries are project specific, as a different version might be required for different projects, so you have to update them separately for each project.

. Open the [filename]#ivy.xml# in an editor in Eclipse.

. Edit the entity definition at the beginning of the file to set the Vaadin
version.
+
[subs="normal"]
----
&lt;!ENTITY vaadin.version "**7.x.x**"&gt;
----
+
You can specify either a fixed version number, as shown in the above example, or
a dynamic revision tag such as [literal]#++latest.release++#.
You can find more information about the dependency declarations in Ivy documentation.

. Right-click the project and select "Ivy > Resolve".
+
Updating the libraries can take several minutes. You can see the progress in the
Eclipse status bar. You can get more details about the progress by clicking the
indicator.

. If you have compiled the widget set for your project, recompile it by clicking
the [guibutton]#Compile Vaadin widgets# button in Eclipse toolbar.

. Stop the integrated Tomcat (or other server) in Eclipse, clear its caches by
right-clicking the server and selecting Clean as well as Clean Tomcat Work
Directory, and restart it.

If you experience problems after updating the libraries, you can try clearing
the Ivy resolution caches by right-clicking the project and selecting "Ivy >
Clean all caches".
Then, do the "Ivy > Resolve" and other tasks again.

+ 27
- 85
documentation/getting-started/getting-started-idea.asciidoc View File

@@ -1,17 +1,15 @@
---
title: Creating a Project with IntelliJ IDEA
order: 8
title: Creating a Project in IntelliJ
order: 120
layout: page
---

[[getting-started.idea]]
= Creating a Project with IntelliJ IDEA

The Ultimate Edition of IntelliJ IDEA includes support for creating Vaadin
applications and running or debugging them in an integrated application server.
With the Community Edition, you can create a Vaadin application most easily with
a Maven archetype and deploy it to a server with a Maven run/debug
configuration.
The Ultimate Edition of IntelliJ IDEA includes support for creating Vaadin applications and running or debugging them in an integrated application server.

With the Community Edition, you can create a Vaadin application most easily with a Maven archetype and deploy it to a server with a Maven run/debug configuration.

ifdef::web[]
For more information, see the article "
@@ -20,69 +18,24 @@ a simple Web application and deploying it to Tomcat]" in the IntelliJ IDEA
Encyclopedia wiki.
endif::web[]

[[getting-started.idea.server]]
== Configuring an Application Server

To run the application during development in the Ultimate Edition of IntelliJ
IDEA, you first need to install and configure an application server that is
integrated with the IDE. The edition includes integration with many commonly
used application servers.

In the following, we configure Apache Tomcat:

. Download and extract Tomcat installation package to a local directory, as
instructed in
<<dummy/../../../framework/getting-started/getting-started-environment#getting-started.environment.tomcat,"Installing
Apache Tomcat">>.

. Select "Configure > Settings".

. Select "IDE Settings > Application Servers".

. Select "+ > Tomcat Server" to add a Tomcat server, or any of the other supported
servers. A WebSocket-enabled server, such as Glassfish or TomEE, is required for
server push.

. In the Tomcat Server dialog, specify the home directory for the server.

+
image::img/idea-server-1.png[]

+
Click [guibutton]#OK#.

. Review the application server settings page to check that it is OK.

+
image::img/idea-server-2.png[]

+
Then, click [guibutton]#OK#.



[[getting-started.idea.project]]
== Creating a Vaadin Web Application Project

In the welcome page, do the following:

. Download and exctract the Vaadin installation package to a local folder, as
instructed in
<<dummy/../../../framework/getting-started/getting-started-package#getting-started.package,"Vaadin
Installation Package">>.
. Download and extract the Vaadin installation package to a local folder, as
instructed in <<dummy/../../../framework/getting-started/getting-started-package#getting-started.package,"Vaadin Installation Package">>.

. Select [menuchoice]#New Project#

. In the [guilabel]#New Project# window, select [menuchoice]#Java#

. Enter a [guilabel]#Project name# and [guilabel]#Project location#, and select
the [guilabel]#Java SDK# to be used for the project. Vaadin requires at least
Java 6. If you have not configured a Java SDK previously, you can configure it
here.

the [guilabel]#Java SDK# to be used for the project.
Vaadin requires at least Java 6.
If you have not configured a Java SDK previously, you can configure it here.
+
image::img/idea-newproject-1.png[]

+
Click [guibutton]#Next#.

@@ -91,16 +44,13 @@ Click [guibutton]#Next#.
. Select Vaadin [guilabel]#Version# and [guilabel]#Distribution# installation
path. You probably also want an application stub, so select [guilabel]#Create
sample application# and give a name for the generated UI class.

+
image::img/idea-newproject-2.png[]

+
Do __not__ click [guibutton]#Finish# yet.

. Select [guilabel]#Application Server# in the same window. Set it as an
integrated server that you have configured in IntelliJ IDEA, as described
previously in <<getting-started.idea.server>>.
. Select [guilabel]#Application Server# in the same window.
Set it as an integrated server that you have configured in IntelliJ IDEA, as described previously in <<DUMMY/../../../framework/installing/installing-idea#installing.idea.ultimate.server, "Configuring an Application Server">>.

ifdef::web[]
+
@@ -109,7 +59,6 @@ endif::web[]

. Click [guibutton]#Finish#.


The project is created with the UI class stub and a [filename]#web.xml#
deployment descriptor.

@@ -127,8 +76,6 @@ To deploy the application to the integrated web server, right-click the
'index.jsp'#. This starts the integrated server, if it was not already running,
and launches the default browser with the application page.



[[getting-started.idea.maven]]
== Creating a Maven Project

@@ -140,15 +87,16 @@ server using a run/debug configuration.
. Select [menuchoice]#New Project#

. In the [guilabel]#New Project# window, select [menuchoice]#Maven#

//&lt;?dbfo-need height="8cm" ?&gt;
. Enter a project name, location, and the Java SDK to be used for the project.
Vaadin requires at least Java 6. Click [guibutton]#Next#.

. Enter a project name, location, and the Java SDK to be used for the project.
Vaadin requires at least Java 6.
+
image::img/idea-maven-newproject-1.png[]

+
Click [guibutton]#Next#.
//&lt;?dbfo-need height="6cm" ?&gt;

. Give a Maven [guilabel]#GroupID#, [guilabel]#ArtifactID#, and a
[guilabel]#Version# for the project, or use the defaults.

@@ -156,8 +104,8 @@ image::img/idea-maven-newproject-1.png[]
image::img/idea-maven-newproject-2.png[]

. Check [guilabel]#Create from archetype#

//&lt;?dbfo-need height="6cm" ?&gt;

. If the Vaadin archetype is not in the list, click [guibutton]#Add archetype#,
enter [guilabel]#GroupId# [literal]#++com.vaadin++#, [guilabel]#ArtifactId#
[literal]#++vaadin-archetype-application++#, and [guilabel]#Version#
@@ -170,8 +118,8 @@ endif::web[]

+
Click [guibutton]#OK# in the dialog.

//&lt;?dbfo-need height="8cm" ?&gt;

. Select the [literal]#++com.vaadin:vaadin-archetype-application++#.

ifdef::web[]
@@ -181,17 +129,17 @@ endif::web[]

+
Click [guibutton]#Next#.

//&lt;?dbfo-need height="8cm" ?&gt;
. Review the general Maven settings and settings for the new project. You may need
to override the settings, especially if you are creating a Maven project for the
first time. Click [guibutton]#Finish#.
. Review the general Maven settings and settings for the new project.
You may need to override the settings, especially if you are creating a Maven project for the first time.

ifdef::web[]
+
image::img/idea-maven-newproject-5.png[]
endif::web[]

+
Click [guibutton]#Finish#.

Creating the Maven project takes some time as Maven fetches the dependencies.
Once done, the project is created and the Maven POM is opened in the editor.
@@ -226,11 +174,10 @@ launch a Vaadin Maven application on the light-weight Jetty web server.

. Select "Run > Edit Configurations".

. Select "+ > Maven" to create a new Maven run/debug configuration.
. Click [guibutton]#+# and select menu:Maven[] to create a new Maven run/debug configuration.

. Enter a [guilabel]#Name# for the run configuration. For the [guilabel]#Command
line#, enter " [literal]#++package jetty:run++# to first compile and package the
project, and then launch Jetty to run it.
. Enter a [guilabel]#Name# for the run configuration.
For the [guilabel]#Command line#, enter "`package jetty:run`# to first compile and package the project, and then launch Jetty to run it.

ifdef::web[]
+
@@ -253,8 +200,3 @@ Compiling the project takes some time on the first time, as it compiles the
widget set and theme. Once the run console pane informs that Jetty Server has
been started, you can open the browser at the default URL
http://localhost:8080/.






+ 40
- 57
documentation/getting-started/getting-started-libraries.asciidoc View File

@@ -1,75 +1,58 @@
---
title: Overview of Vaadin Libraries
order: 3
title: Vaadin Libraries
order: 20
layout: page
---

[[getting-started.libraries]]
= Overview of Vaadin Libraries
= Vaadin Libraries

Vaadin comes as a set of library JARs, of which some are optional or alternative
ones, depending on whether you are developing server-side or client-side
applications, whether you use add-on components, or use CSS or Sass themes.

[filename]#vaadin-server-7.x.x.jar#:: The main library for developing server-side Vaadin applications, as described in
<<dummy/../../../framework/application/application-overview.asciidoc#application.overview,"Writing
a Server-Side Web Application">>. It requires the [filename]#vaadin-shared# and
the [filename]#vaadin-themes# libraries. You can use the prebuilt
[filename]#vaadin-client-compiled# for server-side development, unless you need
add-on components or custom widgets.

[filename]#vaadin-shared-7.x.x.jar#:: A shared library for server-side and client-side development. It is always
needed.

[filename]#vaadin-client-7.x.x.jar#:: The client-side Vaadin framework, including the basic GWT API and
Vaadin-specific widgets and other additions. It is required when using the
[filename]#vaadin-client-compiler# to compile client-side modules. It is not
needed if you just use the server-side framework with the precompiled
Client-Side Engine. You should not deploy it with a web application.

[filename]#vaadin-client-compiler-7.x.x.jar#:: The Vaadin Client Compiler is a Java-to-JavaScript compiler that allows building
client-side modules, such as the Client-Side Engine (widget set) required for
server-side applications. The compiler is needed, for example, for compiling
add-on components to the application widget set, as described in
<<dummy/../../../framework/addons/addons-overview.asciidoc#addons.overview,"Using
Vaadin Add-ons">>.
[filename]#vaadin-server-7.x.x.jar#::
The main library for developing server-side Vaadin applications, as described in
<<dummy/../../../framework/application/application-overview.asciidoc#application.overview,"Writing a Server-Side Web Application">>.
It requires the [filename]#vaadin-shared# and the [filename]#vaadin-themes# libraries.
You can use the pre-built [filename]#vaadin-client-compiled# for server-side development, unless you need add-on components or custom widgets.

[filename]#vaadin-shared-7.x.x.jar#::
A shared library for server-side and client-side development.
It is always needed.

[filename]#vaadin-client-7.x.x.jar#::
The client-side Vaadin framework, including the basic GWT API and Vaadin-specific widgets and other additions.
It is required when using the [filename]#vaadin-client-compiler# to compile client-side modules.
It is not needed if you just use the server-side framework with the pre-compiled Client-Side Engine.
You should not deploy it with a web application.

[filename]#vaadin-client-compiler-7.x.x.jar#::
The Vaadin Client Compiler is a Java-to-JavaScript compiler that allows building client-side modules, such as the Client-Side Engine (widget set) required for server-side applications.
The compiler is needed, for example, for compiling add-on components to the application widget set, as described in <<dummy/../../../framework/addons/addons-overview.asciidoc#addons.overview,"Using Vaadin Add-ons">>.
+
//TODO There's a need for such
section.
//TODO There's a need for such section.
For detailed information regarding the compiler, see
<<dummy/../../../framework/clientside/clientside-compiling#clientside.compiling,"Compiling
a Client-Side Module">>. Note that you should not deploy this library with a web
application.

[filename]#vaadin-client-compiled-7.x.x.jar#:: A precompiled Vaadin Client-Side Engine (widget set) that includes all the basic
built-in widgets in Vaadin. This library is not needed if you compile the
application widget set with the Vaadin Client Compiler.

[filename]#vaadin-themes-7.x.x.jar#:: Vaadin built-in themes both as SCSS source files and precompiled CSS files. The
library is required both for basic use with CSS themes and for compiling custom
Sass themes.

[filename]#vaadin-sass-compiler-1.x.x.jar#:: The Vaadin Sass Compiler compiles Sass themes to CSS, as described in
<<dummy/../../../framework/themes/themes-sass#themes.sass,"Syntactically Awesome
Stylesheets (Sass)">>. It requires the [filename]#vaadin-themes-7.x.x.jar#
library, which contains the Sass sources for the built-in themes. The library
needs to be included in deployment in development mode to allow on-the-fly
compilation of themes, but it is not needed in production deployment, when the
themes are compiled before deployment.


<<dummy/../../../framework/clientside/clientside-compiling#clientside.compiling,"Compiling a Client-Side Module">>.
Note that you should not deploy this library with a web application.

Some of the libraries depend on each other as well as on the dependency
libraries provided in the [filename]#lib# folder of the installation package,
especially the [filename]#lib/vaadin-shared-deps.jar#.
[filename]#vaadin-client-compiled-7.x.x.jar#::
A pre-compiled Vaadin Client-Side Engine (widget set) that includes all the basic built-in widgets in Vaadin.
This library is not needed if you compile the application widget set with the Vaadin Client Compiler.

The different ways to install the libraries are described in the subsequent
sections.
[filename]#vaadin-themes-7.x.x.jar#::
Vaadin built-in themes both as SCSS source files and precompiled CSS files.
The library is required both for basic use with CSS themes and for compiling custom Sass themes.

Note that the [filename]#vaadin-client-compiler# and [filename]#vaadin-client#
JARs should not be deployed with the web application by including them in
[filename]#WEB-INF/lib#. Some other libraries, such as
[filename]#vaadin-sass-compiler#, are not needed in production deployment.
[filename]#vaadin-sass-compiler-1.x.x.jar#::
The Vaadin Sass Compiler compiles Sass themes to CSS, as described in <<dummy/../../../framework/themes/themes-sass#themes.sass,"Syntactically Awesome
Stylesheets (Sass)">>.
It requires the [filename]#vaadin-themes-7.x.x.jar# library, which contains the Sass sources for the built-in themes.
The library needs to be included in deployment in development mode to allow on-the-fly compilation of themes, but it is not needed in production deployment, when the themes are compiled before deployment.

Some of the libraries depend on each other as well as on the dependency libraries provided in the [filename]#lib# folder of the installation package, especially the [filename]#lib/vaadin-shared-deps.jar#.

The different ways to install the libraries are described in the subsequent sections.

Note that the [filename]#vaadin-client-compiler# and [filename]#vaadin-client# JARs should not be deployed with the web application by including them in [filename]#WEB-INF/lib#.
Some other libraries, such as [filename]#vaadin-sass-compiler#, are not needed in production deployment.

+ 19
- 26
documentation/getting-started/getting-started-maven.asciidoc View File

@@ -1,19 +1,17 @@
---
title: Using Vaadin with Maven
order: 6
title: Creating a Project with Maven
order: 200
layout: page
---

[[getting-started.maven]]
= Using Vaadin with Maven
= Creating a Project with Maven

((("Maven", "creating a project", id="term.maven.creating", range="startofrange")))


Maven is a commonly used build and dependency management system. The Vaadin core
library and all Vaadin add-ons are available through Maven. You can use a Maven
with a front-end from Eclipse or NetBeans, or by using the command-line as
described in this section.
In previous sections, we looked into creating a Vaadin Maven project in different IDEs.
In this section, we look how to create such a project on command-line.
You can then import such a project to your IDE.

In addition to regular Maven, you can use any Maven-compatible build or
dependency management system, such as Ivy or Gradle. For Gradle, see the
@@ -21,6 +19,10 @@ link:https://github.com/johndevs/gradle-vaadin-plugin[Gradle Vaadin Plugin].
Vaadin Plugin for Eclipse uses Ivy for resolving dependencies in Vaadin
projects, and it should provide you with the basic Ivy configuration.

For an interactive guide, see the instructions at link:https://vaadin.com/maven[vaadin.com/maven].
It automatically generates you the command to create a new project based on archetype selection.
It can also generate dependency declarations for Vaadin dependencies.

[[getting-started.maven.command-line]]
== Working from Command-Line

@@ -31,7 +33,7 @@ line):
----
[prompt]#$# [command]#mvn# archetype:generate \
-DarchetypeGroupId=com.vaadin \
-DarchetypeArtifactId=[parameter]#vaadin-archetype-application# \
-DarchetypeArtifactId=[replaceable]#vaadin-archetype-application# \
-DarchetypeVersion=[replaceable]#7.x.x# \
-DgroupId=[replaceable]#your.company# \
-DartifactId=[replaceable]#project-name# \
@@ -43,20 +45,13 @@ The parameters are as follows:
[parameter]#archetypeGroupId#:: The group ID of the archetype is [literal]#++com.vaadin++# for Vaadin
archetypes.

[parameter]#archetypeArtifactId#:: The archetype ID. Vaadin 7 currently supports
[literal]#++vaadin-archetype-application++# archetype for server-side
applications and [literal]#++vaadin-archetype-widget++# for client-side widget
development projects.

+
//TODO Vaadin 7: Not all these archetypes are supported
+
////
&lt;itemizedlist&gt; &lt;listitem&gt; &lt;literal&gt;vaadin-archetype-clean&lt;/literal&gt; is a new project with a barebone skeleton for a regular Vaadin application. The &lt;filename&gt;pom.xml&lt;/filename&gt; includes out-commented definitions for additional widgets. &lt;/listitem&gt; &lt;/itemizedlist&gt; &lt;itemizedlist&gt; &lt;listitem&gt; &lt;literal&gt;vaadin-archetype-widget&lt;/literal&gt; is a skeleton for a project with custom widgets. &lt;/listitem&gt; &lt;/itemizedlist&gt; &lt;itemizedlist&gt; &lt;listitem&gt; &lt;literal&gt;vaadin-archetype-sample&lt;/literal&gt; is also for a project with custom widgets, but the skeleton includes the Color Picker example used in &lt;xref linkend="gwt"/&gt;. &lt;/listitem&gt; &lt;/itemizedlist&gt; &lt;itemizedlist&gt; &lt;listitem&gt; &lt;literal&gt;vaadin-archetype-addon&lt;/literal&gt; is for Vaadin add-on projects. It packages the add-on so that it can be published in Vaadin Directory. The archetype is for server-side add-ons and does not include definitions needed for building a widget set. If your add-on includes or requires other than the widgets in the Vaadin core library, you need to copy the required definitions from a POM of a &lt;literal&gt;vaadin-archetype-clean&lt;/literal&gt; project. &lt;/listitem&gt; &lt;/itemizedlist&gt; &lt;itemizedlist&gt; &lt;listitem&gt; &lt;literal&gt;vaadin-archetype-touchkit&lt;/literal&gt; is for projects using Vaadin TouchKit, described in &lt;xref linkend="mobile"/&gt;. Notice that this archetype uses the AGPL-licensed version of TouchKit, which requires that your project must also be licensed under the AGPL license. &lt;/listitem&gt; &lt;/itemizedlist&gt;
////
[parameter]#archetypeVersion#:: Version of the archetype to use. This should be [literal]#++LATEST++# for normal
Vaadin releases. For prerelease versions it should be the exact version number,
such as [literal]#++7.5.3++#.
[parameter]#archetypeArtifactId#:: The archetype ID.
See the list of available archetypes in <<dummy/../../../framework/getting-started-archetypes#getting-started.archetypes,"Overview of Maven Archetypes">>.

[parameter]#archetypeVersion#::
Version of the archetype to use.
This should be [literal]#++LATEST++# for normal Vaadin releases.
For prerelease versions it should be the exact version number, such as [literal]#++7.6.4++#.

[parameter]#groupId#:: A Maven group ID for your project. It is normally your organization domain name
in reverse order, such as com.example. The group ID is also used as a prefix for
@@ -82,7 +77,7 @@ created project structure is shown in

[[figure.getting-started.maven.archetype.created]]
.A New Vaadin Project with Maven
image::img/maven-project-created.png[]
image::img/maven-project-created.png[scaledwidth=60%]


[[getting-started.maven.compiling]]
@@ -129,5 +124,3 @@ Maven Project">>.

(((range="endofrange", startref="term.maven.addons")))
(((range="endofrange", startref="term.maven.creating")))



+ 78
- 33
documentation/getting-started/getting-started-netbeans.asciidoc View File

@@ -1,18 +1,15 @@
---
title: Creating a Project with NetBeans IDE
order: 7
title: Creating a Project in NetBeans
order: 110
layout: page
---

[[getting-started.netbeans]]
= Creating a Project with NetBeans IDE
= Creating a Project with the NetBeans IDE

The easiest way to develop Vaadin application with the NetBeans IDE is to use
the Vaadin Plugin for NetBeans. It allows you to create new Vaadin projects
easily and provides many features for working on a project. You can download the
plugin at http://plugins.netbeans.org/plugin/50531/vaadin-plug-in-for-netbeans.
The download page contains a link to a plugin features overview in NetBeans
Wiki.
In the following, we walk you through the creation of a Vaadin project in NetBeans and show how to run it.

Installation of NetBeans and the Vaadin plugin is covered in <<DUMMY/../../../framework/installing/installing-netbeans#installing.netbeans, "Installing the NetBeans IDE and Plugin">>.

Without the plugin, you can most easily create a Vaadin project as a Maven
project using a Vaadin archetype. You can also create a Vaadin project as a
@@ -20,42 +17,90 @@ regular web application project, but it requires many manual steps to install
all the Vaadin libraries, create the UI class, configure the servlet, create
theme, and so on.

[[getting-started.netbeans.maven]]
== Maven Project from a Vaadin Archetype
[[getting-started.netbeans.creating]]
== Creating a Project

Creating a Maven project with a Vaadin archetype creates an application skeleton
with a UI class and project theme, defines the [filename]#web.xml# deployment
descriptor, and also retrieves the latest Vaadin library automatically.
. Select "File > Net Project..." from the main menu or press kbd:[Ctrl+Shift+N].

. Select "File > New Project".
. In the [guilabel]#New Project# window that opens, select the [guilabel]#Vaadin# category and one of the Vaadin archetypes from the right.
+
image::img/netbeans-newproject-1.png[]
+
The archetypes are described in more detail in <<getting-started-archetypes#getting-started.archetypes, "Overview of Maven Archetypes">>.

. Select "Maven > Project from Archetype" and click [guibutton]#Next#.
. In the [guilabel]#Name and Location# step, enter the project parameters.
+
image::img/netbeans-newproject-2.png[]

. Find [literal]#++vaadin-archetype-application++#, select it, and click
[guilabel]#Next#.
[guilabel]#Project Name#:: A project name.
The name must be a valid identifier that may only contains alphanumerics, minus, and underscore.
It is appended to the group ID to obtain the Java package name for the sources.

. In the [guilabel]#Name and Location# step, enter [guilabel]#Project Name#, which
is recommended to be only lower-case alphabetics, as it is used also as a
suggestion for the Java package name of the project. Modify the other parameters
for your project and click [guibutton]#Finish#.
[guilabel]#Project Location#::
Path to the folder where the project is to be created.

+
[[figure.getting-started.netbeans.maven.new-project]]
.Adding a New Maven Project in NetBeans
image::img/netbeans-maven-newproject-name.png[]
[guilabel]#Group Id#:: A Maven group ID for your project.
It is normally your organization domain name in reverse order, such as `com.example`.
The group ID is also used as a prefix for the Java source package, so it should be Java-compatible package name.

[guilabel]#Version#:: Initial version of your application.
The number must obey the Maven version numbering format.

[guilabel]#Package#:: The Java package name to put sources in.

[guilabel]#Additional Creation Properties#::
The properties control various names.
They are specific to the archetype you chose.

+
Click [guibutton]#Finish#.

Creating the project can take a while as Maven loads all the needed
dependencies. Once created, you can run it by right-clicking on the project in
the [guilabel]#Projects# view and selecting [guilabel]#Run#. In the
[guilabel]#Select deployment server# window that opens, select
[guilabel]#Glassfish# or [guilabel]#Apache Tomcat#, and click [guibutton]#OK#.
dependencies.

[[getting-started.netbeans.exploring]]
== Exploring the Project

The project wizard has done all the work for you: a UI class skeleton has been written to the [filename]#src# directory.
The project hierarchy shown in the Project Explorer is shown in <<figure.getting-started.netbeans.exploring>>.

[[figure.getting-started.netbeans.exploring]]
.A new Vaadin project in NetBeans
image::img/netbeans-created-annotated-hi.png[width=80%]

[filename]#mytheme#::
The theme of the UI.
See <<DUMMY/../../../framework/themes/themes-overview#themes.overview, "Themes">> for information about themes.

[filename]#MyUI.java#::
The UI class, which is the main entry-point of your application.
See <<DUMMY/../../../framework/application/application-overview#application.overview, "Server-Side Applications">> for information about the basic structure of Vaadin applications.

The Vaadin libraries and other dependencies are managed by Maven.
Notice that the libraries are not stored under the project folder, even though they are listed in the "Java Resources > Libraries > Maven Dependencies" virtual folder.

[[getting-started.netbeans.running]]
== Running the Application

Once created, you can run it in a server as follows.

. In [guilabel]#Projects# tab, select the project and click in the [guilabel]#Run Project# button in the tool bar (or press kbd:[F6]).

. In the [guilabel]#Select deployment server# window, select a server from the [guilabel]#Server# list.
It should show either GlassFish or Apache Tomcat or both, depending on what you chose in NetBeans installation.
+
image::img/netbeans-server.png[width=75%]
+
Also, select [guilabel]#Remember Permanently# if you want to use the same server also in future while developing applications.
+
Click [guibutton]#OK#.
+
The widget set will be compiled at this point, which may take a while.

If all goes well, NetBeans starts the server in port 8080 and, depending on your
system configuration, launches the default browser to display the web
application. If not, you can open it manually, for example, at
http://localhost:8080/myproject. The project name is used by default as the
context path of the application.




Now when you edit the UI class in the source editor and save it, NetBeans will automatically redeploy the application. After it has finished after a few seconds, you can reload the application in the browser.

+ 22
- 0
documentation/getting-started/getting-started-overview.adoc View File

@@ -0,0 +1,22 @@
---
title: Overview
order: 1
layout: page
---

[[getting-started.overview]]
= Overview

Once you have installed a development environment, as described in the previous chapter, creating a Vaadin project proceeds in the IDE that you have chosen.

The Vaadin core library and all Vaadin add-ons are available through Maven, a commonly used build and dependency management system.

The recommended way to create a Vaadin application project is to use a Maven archetype.
The archetypes contain all the needed dependencies, which Maven takes care of.
The Eclipse IDE plugin currently also supports creating a normal Eclipse web project using the Ivy dependency manager.

In this chapter, we give:

. An overview of the Vaadin libraries
. List the available Maven archetypes
. Step-by-step instructions for creating a project in the Eclipse IDE, NetBeans IDE, and IntelliJ IDEA, as well as with command-line.

+ 9
- 22
documentation/getting-started/getting-started-package.asciidoc View File

@@ -1,15 +1,13 @@
---
title: Vaadin Installation Package
order: 9
order: 900
layout: page
---

[[getting-started.package]]
= Vaadin Installation Package

While the recommended way to install Vaadin is to use the Eclipse plugin, one of
the other IDE plugins, or a dependency management system, such as Maven, Vaadin
is also available as a ZIP distribution package.
While the recommended way to create a Vaadin project and install the libraries is to use an IDE plugin or a dependency management system, such as Maven, Vaadin is also available as a ZIP distribution package.

You can download the newest Vaadin installation package from the download page
at http://vaadin.com/download/. Please use a ZIP decompression utility available
@@ -18,23 +16,17 @@ in your operating system to extract the files from the ZIP package.
[[getting-started.package.contents]]
== Package Contents

[filename]#README.TXT#:: This Readme file gives simple instructions for installing Vaadin in your
project.
[filename]#README.TXT#:: This README file gives simple instructions for installing Vaadin in your project.

[filename]#release-notes.html#:: The Release Notes contain information about the new features in the particular
release, give upgrade instructions, describe compatibility, etc. Please open the
HTML file with a web browser.
[filename]#release-notes.html#:: The Release Notes contain information about the new features in the particular release, give upgrade instructions, describe compatibility, etc.
Please open the HTML file with a web browser.

[filename]#license.html#:: Apache License version 2.0. Please open the HTML file with a web browser.

[filename]#lib#folder:: All dependency libraries required by Vaadin are contained within the
[filename]#lib# folder.

[filename]#*.jar#:: Vaadin libraries, as described in
<<dummy/../../../framework/getting-started/getting-started-libraries#getting-started.libraries,"Overview
of Vaadin Libraries">>.
[filename]#license.html#:: Apache License version 2.0.
Please open the HTML file with a web browser.

[filename]#lib# folder:: All dependency libraries required by Vaadin are contained within the [filename]#lib# folder.

[filename]#*.jar#:: Vaadin libraries, as described in <<getting-started-libraries#getting-started.libraries,"Overview of Vaadin Libraries">>.


[[getting-started.package.install]]
@@ -58,8 +50,3 @@ organization, which depends on the development environment.
* In Eclipse Dynamic Web Application projects: [filename]#WebContent/WEB-INF/lib#.

* In Maven projects: [filename]#src/main/webapp/WEB-INF/lib#.






+ 1
- 1
documentation/getting-started/getting-started-scala.asciidoc View File

@@ -1,6 +1,6 @@
---
title: Using Vaadin with Scala
order: 10
order: 1000
layout: page
---


BIN
documentation/getting-started/img/debuggingMyProject.png View File


BIN
documentation/getting-started/img/myproject-archetype-selection.png View File


BIN
documentation/getting-started/img/myproject-compilewidgetset.png View File


BIN
documentation/getting-started/img/myproject-created-annotated-hi.png View File


BIN
documentation/getting-started/img/myproject-created.png View File


BIN
documentation/getting-started/img/myproject-ivy-created.png View File


BIN
documentation/getting-started/img/myproject-ivy-new-vaadin.png View File


BIN
documentation/getting-started/img/myproject-ivy-settings.png View File


BIN
documentation/getting-started/img/myproject-ivy-vaadin.png View File


BIN
documentation/getting-started/img/myproject-ivy-web.png View File


BIN
documentation/getting-started/img/myproject-new-vaadin.png View File


BIN
documentation/getting-started/img/myproject-settings.png View File


BIN
documentation/getting-started/img/netbeans-created-annotated-hi.png View File


BIN
documentation/getting-started/img/netbeans-newproject-1.png View File


BIN
documentation/getting-started/img/netbeans-newproject-2.png View File


BIN
documentation/getting-started/img/netbeans-newproject-created.png View File


BIN
documentation/getting-started/img/netbeans-server.png View File


BIN
documentation/getting-started/img/runningMyProject.png View File


BIN
documentation/getting-started/img/tomcat-startserver-1.png View File


BIN
documentation/getting-started/img/tomcat-startserver-2.png View File


BIN
documentation/getting-started/img/tomcat-startserver-3.png View File


BIN
documentation/getting-started/img/tomcat-startserver-4.png View File


BIN
documentation/getting-started/img/tomcat-startserver-5.png View File


+ 13
- 0
documentation/getting-started/original-drawings/Makefile View File

@@ -0,0 +1,13 @@
IMAGES = myproject-created-annotated netbeans-created-annotated

SRCIMAGES := $(foreach file, $(IMAGES), $(file).svg)
TRGIMAGES_HI := $(foreach file, $(IMAGES), ../img/$(file)-hi.png)
TRGIMAGES_LO := $(foreach file, $(IMAGES), ../img/$(file)-lo.png)

images: $(TRGIMAGES_HI) FORCE
# Just do low now $(TRGIMAGES_LO)

$(TRGIMAGES_HI): ../img/%-hi.png: %.svg
inkscape --export-png $@ --export-dpi=150 --export-area-drawing $<

FORCE:

+ 363
- 0
documentation/getting-started/original-drawings/myproject-created-annotated.svg View File

@@ -0,0 +1,363 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->

<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="1052.3622"
height="744.09448"
id="svg1901"
sodipodi:version="0.32"
inkscape:version="0.48.4 r9939"
sodipodi:docname="myproject-created-annotated.svg"
version="1.1">
<defs
id="defs1903">
<marker
id="marker18095"
orient="auto"
markerHeight="5.7450776"
markerWidth="4.6297302">
<g
id="g11064"
transform="matrix(0.5,0,0,0.5,-185.64298,-257.19655)">
<path
inkscape:connector-curvature="0"
sodipodi:nodetypes="csccccccsccssssssssssssssccc"
id="path11050"
d="m 370,508.65625 c -0.86067,0.0587 -1.60944,0.6213 -1.90625,1.4375 -0.26976,0.74176 -0.0577,1.53493 0.4375,2.125 l -1.75,0 c -0.0424,-0.005 -0.0824,0.002 -0.125,0 l 0,4.375 0.125,0 1.75,0 c -0.67896,0.8597 -0.69701,2.11549 0.0937,2.90625 0.85091,0.85091 2.27409,0.85091 3.125,0 l 3.34375,-3.375 c 0.033,-0.0295 0.0643,-0.0608 0.0937,-0.0937 0.0322,-0.0193 0.0635,-0.0402 0.0937,-0.0625 3.7e-4,-3.6e-4 0.21851,-0.28079 0.21875,-0.28125 5e-5,-9e-5 -0.007,-0.0447 0,-0.0625 0.001,-0.003 0.03,0.003 0.0312,0 0.0391,-0.0521 0.051,-0.0518 0.0937,-0.125 0.13699,-0.23476 0.16684,-0.37191 0.15625,-0.34375 0.0368,-0.0915 0.0185,-0.11251 0.0312,-0.15625 0.0106,-0.0102 0.021,-0.0206 0.0312,-0.0312 0.06,-0.22398 0.0881,-0.51689 0.0625,-0.78125 -0.0136,-0.20363 -0.0589,-0.29765 -0.0625,-0.3125 1.4e-4,-0.0104 1.4e-4,-0.0208 0,-0.0312 0.026,0.097 0.0153,0.016 -0.0937,-0.25 -0.0525,-0.13039 -0.0899,-0.21936 -0.125,-0.28125 -0.0524,-0.0897 -0.13346,-0.26235 -0.34375,-0.46875 L 371.75,509.3125 c -0.45645,-0.48671 -1.08509,-0.71163 -1.75,-0.65625 z"
style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none" />
<path
inkscape:connector-curvature="0"
sodipodi:nodetypes="cccscccsssssssscccsccc"
id="path11035"
d="m 366.65625,515.40625 4.625,0 -1.8125,1.8125 c -0.39695,0.39695 -0.39695,1.04055 0,1.4375 0.39695,0.39695 1.04055,0.39695 1.4375,0 l 3.4375,-3.46875 0.0937,-0.0625 c 0.006,-0.006 -0.006,-0.0253 0,-0.0312 0.0554,-0.0572 0.1151,-0.11699 0.15625,-0.1875 0.0286,-0.0491 0.0429,-0.10409 0.0625,-0.15625 0.0124,-0.0307 0.0221,-0.0622 0.0312,-0.0937 0.0311,-0.1161 0.0427,-0.22493 0.0312,-0.34375 -0.004,-0.0578 -0.0174,-0.0996 -0.0312,-0.15625 -0.0109,-0.0407 -0.0151,-0.0857 -0.0312,-0.125 -0.0164,-0.0408 -0.0405,-0.0862 -0.0625,-0.125 -0.0455,-0.0779 -0.0936,-0.15726 -0.15625,-0.21875 l -3.53125,-3.53125 c -0.20891,-0.22276 -0.50816,-0.33785 -0.8125,-0.3125 -0.39478,0.0269 -0.73977,0.28438 -0.875,0.65625 -0.13524,0.37187 -0.0353,0.78826 0.25,1.0625 l 1.875,1.84375 -4.6875,0"
style="fill:#49c2f1;fill-opacity:1;fill-rule:evenodd;stroke:none" />
</g>
</marker>
<marker
id="marker18095-5"
orient="auto"
markerHeight="5.7450776"
markerWidth="4.6297302">
<g
id="g11064-9"
transform="matrix(0.5,0,0,0.5,-185.64298,-257.19655)">
<path
inkscape:connector-curvature="0"
sodipodi:nodetypes="csccccccsccssssssssssssssccc"
id="path11050-2"
d="m 370,508.65625 c -0.86067,0.0587 -1.60944,0.6213 -1.90625,1.4375 -0.26976,0.74176 -0.0577,1.53493 0.4375,2.125 l -1.75,0 c -0.0424,-0.005 -0.0824,0.002 -0.125,0 l 0,4.375 0.125,0 1.75,0 c -0.67896,0.8597 -0.69701,2.11549 0.0937,2.90625 0.85091,0.85091 2.27409,0.85091 3.125,0 l 3.34375,-3.375 c 0.033,-0.0295 0.0643,-0.0608 0.0937,-0.0937 0.0322,-0.0193 0.0635,-0.0402 0.0937,-0.0625 3.7e-4,-3.6e-4 0.21851,-0.28079 0.21875,-0.28125 5e-5,-9e-5 -0.007,-0.0447 0,-0.0625 0.001,-0.003 0.03,0.003 0.0312,0 0.0391,-0.0521 0.051,-0.0518 0.0937,-0.125 0.13699,-0.23476 0.16684,-0.37191 0.15625,-0.34375 0.0368,-0.0915 0.0185,-0.11251 0.0312,-0.15625 0.0106,-0.0102 0.021,-0.0206 0.0312,-0.0312 0.06,-0.22398 0.0881,-0.51689 0.0625,-0.78125 -0.0136,-0.20363 -0.0589,-0.29765 -0.0625,-0.3125 1.4e-4,-0.0104 1.4e-4,-0.0208 0,-0.0312 0.026,0.097 0.0153,0.016 -0.0937,-0.25 -0.0525,-0.13039 -0.0899,-0.21936 -0.125,-0.28125 -0.0524,-0.0897 -0.13346,-0.26235 -0.34375,-0.46875 L 371.75,509.3125 c -0.45645,-0.48671 -1.08509,-0.71163 -1.75,-0.65625 z"
style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none" />
<path
inkscape:connector-curvature="0"
sodipodi:nodetypes="cccscccsssssssscccsccc"
id="path11035-6"
d="m 366.65625,515.40625 4.625,0 -1.8125,1.8125 c -0.39695,0.39695 -0.39695,1.04055 0,1.4375 0.39695,0.39695 1.04055,0.39695 1.4375,0 l 3.4375,-3.46875 0.0937,-0.0625 c 0.006,-0.006 -0.006,-0.0253 0,-0.0312 0.0554,-0.0572 0.1151,-0.11699 0.15625,-0.1875 0.0286,-0.0491 0.0429,-0.10409 0.0625,-0.15625 0.0124,-0.0307 0.0221,-0.0622 0.0312,-0.0937 0.0311,-0.1161 0.0427,-0.22493 0.0312,-0.34375 -0.004,-0.0578 -0.0174,-0.0996 -0.0312,-0.15625 -0.0109,-0.0407 -0.0151,-0.0857 -0.0312,-0.125 -0.0164,-0.0408 -0.0405,-0.0862 -0.0625,-0.125 -0.0455,-0.0779 -0.0936,-0.15726 -0.15625,-0.21875 l -3.53125,-3.53125 c -0.20891,-0.22276 -0.50816,-0.33785 -0.8125,-0.3125 -0.39478,0.0269 -0.73977,0.28438 -0.875,0.65625 -0.13524,0.37187 -0.0353,0.78826 0.25,1.0625 l 1.875,1.84375 -4.6875,0"
style="fill:#49c2f1;fill-opacity:1;fill-rule:evenodd;stroke:none" />
</g>
</marker>
</defs>
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="1.4"
inkscape:cx="191.07987"
inkscape:cy="356.49384"
inkscape:document-units="px"
inkscape:current-layer="layer1"
inkscape:window-width="1920"
inkscape:window-height="1060"
inkscape:window-x="-2"
inkscape:window-y="-3"
showgrid="true"
inkscape:window-maximized="1"
inkscape:snap-center="true"
inkscape:snap-grids="true"
inkscape:snap-bbox="true"
inkscape:object-paths="true"
inkscape:object-nodes="true"
inkscape:snap-object-midpoints="true"
showguides="true"
inkscape:guide-bbox="true">
<inkscape:grid
type="xygrid"
id="grid2982"
empspacing="5"
visible="true"
enabled="true"
snapvisiblegridlinesonly="true"
spacingx="5px"
spacingy="5px" />
<sodipodi:guide
orientation="1,0"
position="385,100"
id="guide11876" />
</sodipodi:namedview>
<metadata
id="metadata1906">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title />
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:label="Taso 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(0,-308.2677)">
<rect
style="color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.5;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
id="rect29725"
width="480"
height="455"
x="95"
y="164.09448"
transform="translate(0,308.2677)"
ry="3.7880721" />
<image
y="475.67679"
x="97.162643"
id="image3215"
xlink:href="file:///home/magi/itmill/vaadin/documentation/getting-started/img/myproject-created.png"
height="453.37076"
width="305.67471" />
<g
transform="translate(204.99999,-146.51524)"
id="g3822-4">
<path
sodipodi:nodetypes="cc"
style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m 50,419.09448 125,0"
id="path3804-2"
inkscape:connector-curvature="0"
transform="translate(0,308.2677)" />
<path
sodipodi:type="arc"
style="color:#000000;fill:#ffedd1;fill-opacity:1;stroke:#000000;stroke-width:2.74977946000000006;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
id="path3005-2-10"
sodipodi:cx="25"
sodipodi:cy="419.09448"
sodipodi:rx="9.1659365"
sodipodi:ry="9.1659365"
d="m 34.165936,419.09448 c 0,5.06221 -4.103729,9.16594 -9.165936,9.16594 -5.062207,0 -9.165936,-4.10373 -9.165936,-9.16594 0,-5.0622 4.103729,-9.16593 9.165936,-9.16593 5.062207,0 9.165936,4.10373 9.165936,9.16593 z"
transform="matrix(0.54549827,0,0,0.54549827,36.362543,498.74687)" />
<path
sodipodi:type="arc"
style="color:#000000;fill:#ecf3ff;fill-opacity:1;stroke:#000000;stroke-width:2.74977946000000006;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
id="path3005-2-10-5"
sodipodi:cx="25"
sodipodi:cy="419.09448"
sodipodi:rx="9.1659365"
sodipodi:ry="9.1659365"
d="m 34.165936,419.09448 c 0,5.06221 -4.103729,9.16594 -9.165936,9.16594 -5.062207,0 -9.165936,-4.10373 -9.165936,-9.16594 0,-5.0622 4.103729,-9.16593 9.165936,-9.16593 5.062207,0 9.165936,4.10373 9.165936,9.16593 z"
transform="matrix(0.54549827,0,0,0.54549827,156.36255,498.74687)" />
</g>
<text
xml:space="preserve"
style="font-size:14px;font-style:normal;font-variant:normal;font-weight:300;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Helvetica LT Std;-inkscape-font-specification:Helvetica LT Std Light"
x="385"
y="584.474"
id="text13161"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan13163"
x="385"
y="584.474">The UI class skeleton</tspan></text>
<g
transform="translate(204.99999,-66.969547)"
id="g3822-4-7">
<path
sodipodi:nodetypes="cc"
style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m 150.00001,419.09448 24.99999,0"
id="path3804-2-1"
inkscape:connector-curvature="0"
transform="translate(0,308.2677)" />
<path
sodipodi:type="arc"
style="color:#000000;fill:#ffedd1;fill-opacity:1;stroke:#000000;stroke-width:2.74977946000000006;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
id="path3005-2-10-1"
sodipodi:cx="25"
sodipodi:cy="419.09448"
sodipodi:rx="9.1659365"
sodipodi:ry="9.1659365"
d="m 34.165936,419.09448 a 9.1659365,9.1659365 0 1 1 -18.331872,0 9.1659365,9.1659365 0 1 1 18.331872,0 z"
transform="matrix(0.54549827,0,0,0.54549827,136.36255,498.74687)" />
<path
sodipodi:type="arc"
style="color:#000000;fill:#ecf3ff;fill-opacity:1;stroke:#000000;stroke-width:2.74977946000000006;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
id="path3005-2-10-5-4"
sodipodi:cx="25"
sodipodi:cy="419.09448"
sodipodi:rx="9.1659365"
sodipodi:ry="9.1659365"
d="m 34.165936,419.09448 c 0,5.06221 -4.103729,9.16594 -9.165936,9.16594 -5.062207,0 -9.165936,-4.10373 -9.165936,-9.16594 0,-5.0622 4.103729,-9.16593 9.165936,-9.16593 5.062207,0 9.165936,4.10373 9.165936,9.16593 z"
transform="matrix(0.54549827,0,0,0.54549827,156.36255,498.74687)" />
</g>
<g
transform="translate(270,77.857138)"
id="g3822-4-8">
<path
sodipodi:nodetypes="cccc"
style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m 25,762.36218 10,-5 0,-20 10,-10"
id="path3804-2-3-46-9"
inkscape:connector-curvature="0" />
<path
sodipodi:nodetypes="cccc"
style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m 25,692.36218 10,5 0,20 10,10"
id="path3804-2-3-46"
inkscape:connector-curvature="0" />
<path
sodipodi:nodetypes="cc"
style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m 45,419.09448 60,1e-5"
id="path3804-2-3"
inkscape:connector-curvature="0"
transform="translate(0,308.2677)" />
<path
sodipodi:type="arc"
style="color:#000000;fill:#ffedd1;fill-opacity:1;stroke:#000000;stroke-width:2.74977946;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
id="path3005-2-10-8"
sodipodi:cx="25"
sodipodi:cy="419.09448"
sodipodi:rx="9.1659365"
sodipodi:ry="9.1659365"
d="m 34.165936,419.09448 a 9.1659365,9.1659365 0 1 1 -18.331872,0 9.1659365,9.1659365 0 1 1 18.331872,0 z"
transform="matrix(0.54549827,0,0,0.54549827,31.362543,498.74687)" />
<path
sodipodi:type="arc"
style="color:#000000;fill:#ecf3ff;fill-opacity:1;stroke:#000000;stroke-width:2.74977946000000006;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
id="path3005-2-10-5-2"
sodipodi:cx="25"
sodipodi:cy="419.09448"
sodipodi:rx="9.1659365"
sodipodi:ry="9.1659365"
d="m 34.165936,419.09448 c 0,5.06221 -4.103729,9.16594 -9.165936,9.16594 -5.062207,0 -9.165936,-4.10373 -9.165936,-9.16594 0,-5.0622 4.103729,-9.16593 9.165936,-9.16593 5.062207,0 9.165936,4.10373 9.165936,9.16593 z"
transform="matrix(0.54549827,0,0,0.54549827,91.362543,498.74687)" />
</g>
<g
transform="translate(270,169.99999)"
id="g3822-4-8-5">
<path
sodipodi:nodetypes="cc"
style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m -70,419.09449 175,0"
id="path3804-2-3-4"
inkscape:connector-curvature="0"
transform="translate(0,308.2677)" />
<path
sodipodi:type="arc"
style="color:#000000;fill:#ffedd1;fill-opacity:1;stroke:#000000;stroke-width:2.74977946000000006;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
id="path3005-2-10-8-2"
sodipodi:cx="25"
sodipodi:cy="419.09448"
sodipodi:rx="9.1659365"
sodipodi:ry="9.1659365"
d="m 34.165936,419.09448 a 9.1659365,9.1659365 0 1 1 -18.331872,0 9.1659365,9.1659365 0 1 1 18.331872,0 z"
transform="matrix(0.54549827,0,0,0.54549827,-83.637457,498.74688)" />
<path
sodipodi:type="arc"
style="color:#000000;fill:#ecf3ff;fill-opacity:1;stroke:#000000;stroke-width:2.74977946000000006;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
id="path3005-2-10-5-2-3"
sodipodi:cx="25"
sodipodi:cy="419.09448"
sodipodi:rx="9.1659365"
sodipodi:ry="9.1659365"
d="m 34.165936,419.09448 c 0,5.06221 -4.103729,9.16594 -9.165936,9.16594 -5.062207,0 -9.165936,-4.10373 -9.165936,-9.16594 0,-5.0622 4.103729,-9.16593 9.165936,-9.16593 5.062207,0 9.165936,4.10373 9.165936,9.16593 z"
transform="matrix(0.54549827,0,0,0.54549827,91.362543,498.74687)" />
</g>
<g
transform="translate(270,187.3214)"
id="g3822-4-8-5-4">
<path
sodipodi:nodetypes="cc"
style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m -45,419.09448 150,1e-5"
id="path3804-2-3-4-5"
inkscape:connector-curvature="0"
transform="translate(0,308.2677)" />
<path
sodipodi:type="arc"
style="color:#000000;fill:#ffedd1;fill-opacity:1;stroke:#000000;stroke-width:2.74977946000000006;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
id="path3005-2-10-8-2-3"
sodipodi:cx="25"
sodipodi:cy="419.09448"
sodipodi:rx="9.1659365"
sodipodi:ry="9.1659365"
d="m 34.165936,419.09448 c 0,5.06221 -4.103729,9.16594 -9.165936,9.16594 -5.062207,0 -9.165936,-4.10373 -9.165936,-9.16594 0,-5.0622 4.103729,-9.16593 9.165936,-9.16593 5.062207,0 9.165936,4.10373 9.165936,9.16593 z"
transform="matrix(0.54549827,0,0,0.54549827,-58.637457,498.74688)" />
<path
sodipodi:type="arc"
style="color:#000000;fill:#ecf3ff;fill-opacity:1;stroke:#000000;stroke-width:2.74977946000000006;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
id="path3005-2-10-5-2-3-8"
sodipodi:cx="25"
sodipodi:cy="419.09448"
sodipodi:rx="9.1659365"
sodipodi:ry="9.1659365"
d="m 34.165936,419.09448 c 0,5.06221 -4.103729,9.16594 -9.165936,9.16594 -5.062207,0 -9.165936,-4.10373 -9.165936,-9.16594 0,-5.0622 4.103729,-9.16593 9.165936,-9.16593 5.062207,0 9.165936,4.10373 9.165936,9.16593 z"
transform="matrix(0.54549827,0,0,0.54549827,91.362543,498.74687)" />
</g>
<text
xml:space="preserve"
style="font-size:14px;font-style:normal;font-variant:normal;font-weight:300;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Helvetica LT Std;-inkscape-font-specification:Helvetica LT Std Light"
x="385"
y="664.25208"
id="text13161-0"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan13163-0"
x="385"
y="664.25208">The widget set</tspan></text>
<text
xml:space="preserve"
style="font-size:14px;font-style:normal;font-variant:normal;font-weight:300;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Helvetica LT Std;-inkscape-font-specification:Helvetica LT Std Light"
x="385"
y="808.74548"
id="text13161-0-4"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan13163-0-8"
x="385"
y="808.74548">The theme</tspan></text>
<text
xml:space="preserve"
style="font-size:14px;font-style:normal;font-variant:normal;font-weight:300;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Helvetica LT Std;-inkscape-font-specification:Helvetica LT Std Light"
x="385"
y="901.34863"
id="text13161-0-4-1"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan13163-0-8-3"
x="385"
y="901.34863">Maven project configuration</tspan></text>
<text
xml:space="preserve"
style="font-size:14px;font-style:normal;font-variant:normal;font-weight:300;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Helvetica LT Std;-inkscape-font-specification:Helvetica LT Std Light"
x="385"
y="918.85156"
id="text13161-0-4-4"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan13163-0-8-2"
x="385"
y="918.85156">Project README skeleton</tspan></text>
</g>
</svg>

+ 324
- 0
documentation/getting-started/original-drawings/netbeans-created-annotated.svg View File

@@ -0,0 +1,324 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->

<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="1052.3622"
height="744.09448"
id="svg1901"
sodipodi:version="0.32"
inkscape:version="0.48.4 r9939"
sodipodi:docname="netbeans-created-annotated.svg"
version="1.1">
<defs
id="defs1903">
<marker
id="marker18095"
orient="auto"
markerHeight="5.7450776"
markerWidth="4.6297302">
<g
id="g11064"
transform="matrix(0.5,0,0,0.5,-185.64298,-257.19655)">
<path
inkscape:connector-curvature="0"
sodipodi:nodetypes="csccccccsccssssssssssssssccc"
id="path11050"
d="m 370,508.65625 c -0.86067,0.0587 -1.60944,0.6213 -1.90625,1.4375 -0.26976,0.74176 -0.0577,1.53493 0.4375,2.125 l -1.75,0 c -0.0424,-0.005 -0.0824,0.002 -0.125,0 l 0,4.375 0.125,0 1.75,0 c -0.67896,0.8597 -0.69701,2.11549 0.0937,2.90625 0.85091,0.85091 2.27409,0.85091 3.125,0 l 3.34375,-3.375 c 0.033,-0.0295 0.0643,-0.0608 0.0937,-0.0937 0.0322,-0.0193 0.0635,-0.0402 0.0937,-0.0625 3.7e-4,-3.6e-4 0.21851,-0.28079 0.21875,-0.28125 5e-5,-9e-5 -0.007,-0.0447 0,-0.0625 0.001,-0.003 0.03,0.003 0.0312,0 0.0391,-0.0521 0.051,-0.0518 0.0937,-0.125 0.13699,-0.23476 0.16684,-0.37191 0.15625,-0.34375 0.0368,-0.0915 0.0185,-0.11251 0.0312,-0.15625 0.0106,-0.0102 0.021,-0.0206 0.0312,-0.0312 0.06,-0.22398 0.0881,-0.51689 0.0625,-0.78125 -0.0136,-0.20363 -0.0589,-0.29765 -0.0625,-0.3125 1.4e-4,-0.0104 1.4e-4,-0.0208 0,-0.0312 0.026,0.097 0.0153,0.016 -0.0937,-0.25 -0.0525,-0.13039 -0.0899,-0.21936 -0.125,-0.28125 -0.0524,-0.0897 -0.13346,-0.26235 -0.34375,-0.46875 L 371.75,509.3125 c -0.45645,-0.48671 -1.08509,-0.71163 -1.75,-0.65625 z"
style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none" />
<path
inkscape:connector-curvature="0"
sodipodi:nodetypes="cccscccsssssssscccsccc"
id="path11035"
d="m 366.65625,515.40625 4.625,0 -1.8125,1.8125 c -0.39695,0.39695 -0.39695,1.04055 0,1.4375 0.39695,0.39695 1.04055,0.39695 1.4375,0 l 3.4375,-3.46875 0.0937,-0.0625 c 0.006,-0.006 -0.006,-0.0253 0,-0.0312 0.0554,-0.0572 0.1151,-0.11699 0.15625,-0.1875 0.0286,-0.0491 0.0429,-0.10409 0.0625,-0.15625 0.0124,-0.0307 0.0221,-0.0622 0.0312,-0.0937 0.0311,-0.1161 0.0427,-0.22493 0.0312,-0.34375 -0.004,-0.0578 -0.0174,-0.0996 -0.0312,-0.15625 -0.0109,-0.0407 -0.0151,-0.0857 -0.0312,-0.125 -0.0164,-0.0408 -0.0405,-0.0862 -0.0625,-0.125 -0.0455,-0.0779 -0.0936,-0.15726 -0.15625,-0.21875 l -3.53125,-3.53125 c -0.20891,-0.22276 -0.50816,-0.33785 -0.8125,-0.3125 -0.39478,0.0269 -0.73977,0.28438 -0.875,0.65625 -0.13524,0.37187 -0.0353,0.78826 0.25,1.0625 l 1.875,1.84375 -4.6875,0"
style="fill:#49c2f1;fill-opacity:1;fill-rule:evenodd;stroke:none" />
</g>
</marker>
<marker
id="marker18095-5"
orient="auto"
markerHeight="5.7450776"
markerWidth="4.6297302">
<g
id="g11064-9"
transform="matrix(0.5,0,0,0.5,-185.64298,-257.19655)">
<path
inkscape:connector-curvature="0"
sodipodi:nodetypes="csccccccsccssssssssssssssccc"
id="path11050-2"
d="m 370,508.65625 c -0.86067,0.0587 -1.60944,0.6213 -1.90625,1.4375 -0.26976,0.74176 -0.0577,1.53493 0.4375,2.125 l -1.75,0 c -0.0424,-0.005 -0.0824,0.002 -0.125,0 l 0,4.375 0.125,0 1.75,0 c -0.67896,0.8597 -0.69701,2.11549 0.0937,2.90625 0.85091,0.85091 2.27409,0.85091 3.125,0 l 3.34375,-3.375 c 0.033,-0.0295 0.0643,-0.0608 0.0937,-0.0937 0.0322,-0.0193 0.0635,-0.0402 0.0937,-0.0625 3.7e-4,-3.6e-4 0.21851,-0.28079 0.21875,-0.28125 5e-5,-9e-5 -0.007,-0.0447 0,-0.0625 0.001,-0.003 0.03,0.003 0.0312,0 0.0391,-0.0521 0.051,-0.0518 0.0937,-0.125 0.13699,-0.23476 0.16684,-0.37191 0.15625,-0.34375 0.0368,-0.0915 0.0185,-0.11251 0.0312,-0.15625 0.0106,-0.0102 0.021,-0.0206 0.0312,-0.0312 0.06,-0.22398 0.0881,-0.51689 0.0625,-0.78125 -0.0136,-0.20363 -0.0589,-0.29765 -0.0625,-0.3125 1.4e-4,-0.0104 1.4e-4,-0.0208 0,-0.0312 0.026,0.097 0.0153,0.016 -0.0937,-0.25 -0.0525,-0.13039 -0.0899,-0.21936 -0.125,-0.28125 -0.0524,-0.0897 -0.13346,-0.26235 -0.34375,-0.46875 L 371.75,509.3125 c -0.45645,-0.48671 -1.08509,-0.71163 -1.75,-0.65625 z"
style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none" />
<path
inkscape:connector-curvature="0"
sodipodi:nodetypes="cccscccsssssssscccsccc"
id="path11035-6"
d="m 366.65625,515.40625 4.625,0 -1.8125,1.8125 c -0.39695,0.39695 -0.39695,1.04055 0,1.4375 0.39695,0.39695 1.04055,0.39695 1.4375,0 l 3.4375,-3.46875 0.0937,-0.0625 c 0.006,-0.006 -0.006,-0.0253 0,-0.0312 0.0554,-0.0572 0.1151,-0.11699 0.15625,-0.1875 0.0286,-0.0491 0.0429,-0.10409 0.0625,-0.15625 0.0124,-0.0307 0.0221,-0.0622 0.0312,-0.0937 0.0311,-0.1161 0.0427,-0.22493 0.0312,-0.34375 -0.004,-0.0578 -0.0174,-0.0996 -0.0312,-0.15625 -0.0109,-0.0407 -0.0151,-0.0857 -0.0312,-0.125 -0.0164,-0.0408 -0.0405,-0.0862 -0.0625,-0.125 -0.0455,-0.0779 -0.0936,-0.15726 -0.15625,-0.21875 l -3.53125,-3.53125 c -0.20891,-0.22276 -0.50816,-0.33785 -0.8125,-0.3125 -0.39478,0.0269 -0.73977,0.28438 -0.875,0.65625 -0.13524,0.37187 -0.0353,0.78826 0.25,1.0625 l 1.875,1.84375 -4.6875,0"
style="fill:#49c2f1;fill-opacity:1;fill-rule:evenodd;stroke:none" />
</g>
</marker>
<mask
maskUnits="userSpaceOnUse"
id="mask3028">
<rect
style="color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:#ffffff;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:0.13524589;stroke-dasharray:2, 2;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
id="rect3030"
width="425"
height="525"
x="-25"
y="477.36218" />
</mask>
</defs>
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="1.4"
inkscape:cx="325.14306"
inkscape:cy="308.11666"
inkscape:document-units="px"
inkscape:current-layer="layer1"
inkscape:window-width="1920"
inkscape:window-height="1060"
inkscape:window-x="-2"
inkscape:window-y="-3"
showgrid="true"
inkscape:window-maximized="1"
inkscape:snap-center="true"
inkscape:snap-grids="true"
inkscape:snap-bbox="true"
inkscape:object-paths="true"
inkscape:object-nodes="true"
inkscape:snap-object-midpoints="true"
showguides="true"
inkscape:guide-bbox="true">
<inkscape:grid
type="xygrid"
id="grid2982"
empspacing="5"
visible="true"
enabled="true"
snapvisiblegridlinesonly="true"
spacingx="5px"
spacingy="5px" />
<sodipodi:guide
orientation="1,0"
position="355,465"
id="guide11876" />
</sodipodi:namedview>
<metadata
id="metadata1906">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title />
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:label="Taso 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(0,-308.2677)">
<image
y="489.01947"
x="-12.462494"
id="image3215"
xlink:href="file:///home/magi/itmill/vaadin/documentation/getting-started/img/netbeans-newproject-created.png"
width="587.46252"
height="487.08057"
mask="url(#mask3028)" />
<g
transform="translate(164.99999,24.999997)"
id="g3822-4">
<path
sodipodi:nodetypes="cc"
style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="M 20.00001,419.09449 175,419.09448"
id="path3804-2"
inkscape:connector-curvature="0"
transform="translate(0,308.2677)" />
<path
sodipodi:type="arc"
style="color:#000000;fill:#ffedd1;fill-opacity:1;stroke:#000000;stroke-width:2.74977946;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
id="path3005-2-10"
sodipodi:cx="25"
sodipodi:cy="419.09448"
sodipodi:rx="9.1659365"
sodipodi:ry="9.1659365"
d="m 34.165936,419.09448 a 9.1659365,9.1659365 0 1 1 -18.331872,0 9.1659365,9.1659365 0 1 1 18.331872,0 z"
transform="matrix(0.54549827,0,0,0.54549827,6.3625532,498.74687)" />
<path
sodipodi:type="arc"
style="color:#000000;fill:#ecf3ff;fill-opacity:1;stroke:#000000;stroke-width:2.74977946;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
id="path3005-2-10-5"
sodipodi:cx="25"
sodipodi:cy="419.09448"
sodipodi:rx="9.1659365"
sodipodi:ry="9.1659365"
d="m 34.165936,419.09448 c 0,5.06221 -4.103729,9.16594 -9.165936,9.16594 -5.062207,0 -9.165936,-4.10373 -9.165936,-9.16594 0,-5.0622 4.103729,-9.16593 9.165936,-9.16593 5.062207,0 9.165936,4.10373 9.165936,9.16593 z"
transform="matrix(0.54549827,0,0,0.54549827,156.36255,498.74687)" />
</g>
<text
xml:space="preserve"
style="font-size:16px;font-style:normal;font-variant:normal;font-weight:300;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Helvetica LT Std;-inkscape-font-specification:Helvetica LT Std Light"
x="354.74399"
y="756.59644"
id="text13161"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan13163"
x="354.74399"
y="756.59644">The UI class skeleton</tspan></text>
<g
transform="translate(159.99999,107.5254)"
id="g3822-4-7">
<path
sodipodi:nodetypes="cc"
style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m 145.00001,419.09448 29.99999,0"
id="path3804-2-1"
inkscape:connector-curvature="0"
transform="translate(0,308.2677)" />
<path
sodipodi:type="arc"
style="color:#000000;fill:#ffedd1;fill-opacity:1;stroke:#000000;stroke-width:2.74977946;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
id="path3005-2-10-1"
sodipodi:cx="25"
sodipodi:cy="419.09448"
sodipodi:rx="9.1659365"
sodipodi:ry="9.1659365"
d="m 34.165936,419.09448 a 9.1659365,9.1659365 0 1 1 -18.331872,0 9.1659365,9.1659365 0 1 1 18.331872,0 z"
transform="matrix(0.54549827,0,0,0.54549827,131.36255,498.74687)" />
<path
sodipodi:type="arc"
style="color:#000000;fill:#ecf3ff;fill-opacity:1;stroke:#000000;stroke-width:2.74977946;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
id="path3005-2-10-5-4"
sodipodi:cx="25"
sodipodi:cy="419.09448"
sodipodi:rx="9.1659365"
sodipodi:ry="9.1659365"
d="m 34.165936,419.09448 a 9.1659365,9.1659365 0 1 1 -18.331872,0 9.1659365,9.1659365 0 1 1 18.331872,0 z"
transform="matrix(0.54549827,0,0,0.54549827,161.36255,498.74687)" />
</g>
<g
transform="translate(235,-75.000003)"
id="g3822-4-8">
<path
sodipodi:nodetypes="cccc"
style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m 25,777.36219 10,-10 0,-30.00001 10,-10"
id="path3804-2-3-46-9"
inkscape:connector-curvature="0" />
<path
sodipodi:nodetypes="cccc"
style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m 25,677.36219 10,10 0,29.99999 10,10"
id="path3804-2-3-46"
inkscape:connector-curvature="0" />
<path
sodipodi:nodetypes="cc"
style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m 45,419.09448 55,1e-5"
id="path3804-2-3"
inkscape:connector-curvature="0"
transform="translate(0,308.2677)" />
<path
sodipodi:type="arc"
style="color:#000000;fill:#ffedd1;fill-opacity:1;stroke:#000000;stroke-width:2.74977946;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
id="path3005-2-10-8"
sodipodi:cx="25"
sodipodi:cy="419.09448"
sodipodi:rx="9.1659365"
sodipodi:ry="9.1659365"
d="m 34.165936,419.09448 c 0,5.06221 -4.103729,9.16594 -9.165936,9.16594 -5.062207,0 -9.165936,-4.10373 -9.165936,-9.16594 0,-5.0622 4.103729,-9.16593 9.165936,-9.16593 5.062207,0 9.165936,4.10373 9.165936,9.16593 z"
transform="matrix(0.54549827,0,0,0.54549827,31.362543,498.74687)" />
<path
sodipodi:type="arc"
style="color:#000000;fill:#ecf3ff;fill-opacity:1;stroke:#000000;stroke-width:2.74977946;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
id="path3005-2-10-5-2"
sodipodi:cx="25"
sodipodi:cy="419.09448"
sodipodi:rx="9.1659365"
sodipodi:ry="9.1659365"
d="m 34.165936,419.09448 a 9.1659365,9.1659365 0 1 1 -18.331872,0 9.1659365,9.1659365 0 1 1 18.331872,0 z"
transform="matrix(0.54549827,0,0,0.54549827,86.362543,498.74687)" />
</g>
<g
transform="translate(230,170)"
id="g3822-4-8-5">
<path
sodipodi:nodetypes="cc"
style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m -70,419.09449 175,0"
id="path3804-2-3-4"
inkscape:connector-curvature="0"
transform="translate(0,308.2677)" />
<path
sodipodi:type="arc"
style="color:#000000;fill:#ffedd1;fill-opacity:1;stroke:#000000;stroke-width:2.74977946;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
id="path3005-2-10-8-2"
sodipodi:cx="25"
sodipodi:cy="419.09448"
sodipodi:rx="9.1659365"
sodipodi:ry="9.1659365"
d="m 34.165936,419.09448 c 0,5.06221 -4.103729,9.16594 -9.165936,9.16594 -5.062207,0 -9.165936,-4.10373 -9.165936,-9.16594 0,-5.0622 4.103729,-9.16593 9.165936,-9.16593 5.062207,0 9.165936,4.10373 9.165936,9.16593 z"
transform="matrix(0.54549827,0,0,0.54549827,-83.637457,498.74688)" />
<path
sodipodi:type="arc"
style="color:#000000;fill:#ecf3ff;fill-opacity:1;stroke:#000000;stroke-width:2.74977946;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
id="path3005-2-10-5-2-3"
sodipodi:cx="25"
sodipodi:cy="419.09448"
sodipodi:rx="9.1659365"
sodipodi:ry="9.1659365"
d="m 34.165936,419.09448 c 0,5.06221 -4.103729,9.16594 -9.165936,9.16594 -5.062207,0 -9.165936,-4.10373 -9.165936,-9.16594 0,-5.0622 4.103729,-9.16593 9.165936,-9.16593 5.062207,0 9.165936,4.10373 9.165936,9.16593 z"
transform="matrix(0.54549827,0,0,0.54549827,91.362543,498.74687)" />
</g>
<text
xml:space="preserve"
style="font-size:16px;font-style:normal;font-variant:normal;font-weight:300;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Helvetica LT Std;-inkscape-font-specification:Helvetica LT Std Light"
x="354.74399"
y="839.23932"
id="text13161-0"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan13163-0"
x="354.74399"
y="839.23932">The widget set definition</tspan></text>
<text
xml:space="preserve"
style="font-size:16px;font-style:normal;font-variant:normal;font-weight:300;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Helvetica LT Std;-inkscape-font-specification:Helvetica LT Std Light"
x="354.74399"
y="656.86194"
id="text13161-0-4"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan13163-0-8"
x="354.74399"
y="656.86194">The theme</tspan></text>
<text
xml:space="preserve"
style="font-size:16px;font-style:normal;font-variant:normal;font-weight:300;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Helvetica LT Std;-inkscape-font-specification:Helvetica LT Std Light"
x="353.75201"
y="901.60632"
id="text13161-0-4-1"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan13163-0-8-3"
x="353.75201"
y="901.60632">Maven project configuration</tspan></text>
</g>
</svg>

+ 2
- 2
documentation/gwt/gwt-rpc.asciidoc View File

@@ -35,8 +35,8 @@ public interface MyComponentServerRpc extends ServerRpc {
}
----

The above example defines a single [methodname]#clicks()# RPC call, which takes
a [classname]#MouseEventDetails# object as the parameter.
The above example defines a single [methodname]#clicked()# RPC call, which takes
a [classname]#String# object as the parameter.

You can pass the most common standard Java types, such as primitive and boxed
primitive types, [classname]#String#, and arrays and some collections (

+ 1
- 1
documentation/gwt/gwt-shared-state.asciidoc View File

@@ -80,7 +80,7 @@ public MyComponent() {


[[gwt.shared-state.connector]]
== Handing Shared State in a Connector
== Handling Shared State in a Connector

A connector can access a shared state with the [methodname]#getState()# method.
The access should be read-only. It is required that you override the base

BIN
documentation/img/createMavenProject.jpg View File


BIN
documentation/img/debugAsMavenBuild.jpg View File


BIN
documentation/img/debugAsMavenBuild2.jpg View File


BIN
documentation/img/debugAsMavenBuildAddSources.jpg View File


BIN
documentation/img/debugInBreakPointVariable.jpg View File


BIN
documentation/img/eclipseWithoutJdkError.jpg View File


BIN
documentation/img/finalUI.jpg View File


BIN
documentation/img/pluginEclipseMarketPlace2.jpg View File


BIN
documentation/img/projectWizard2-add.jpg View File


BIN
documentation/img/projectWizard2-top.jpg View File


BIN
documentation/img/projectWizard2.jpg View File


BIN
documentation/img/projectWizard3.jpg View File


BIN
documentation/img/projectWizardAddArchetype-crop.jpg View File


BIN
documentation/img/projectWizardAddArchetype.jpg View File


+ 20
- 0
documentation/installing/chapter-installing.asciidoc View File

@@ -0,0 +1,20 @@
[[installing]]
== Installing the Development Toolchain

This chapter gives practical instructions for installing the development tools.

include::installing-overview.adoc[leveloffset=+2]

include::installing-toolchain.adoc[leveloffset=+2]

include::installing-java.adoc[leveloffset=+2]

include::installing-server.adoc[leveloffset=+2]

include::installing-eclipse.adoc[leveloffset=+2]

include::installing-netbeans.asciidoc[leveloffset=+2]

include::installing-idea.asciidoc[leveloffset=+2]

include::installing-other.adoc[leveloffset=+2]

BIN
documentation/installing/img/clearall-icon.png View File


documentation/getting-started/img/firebug.png → documentation/installing/img/firebug.png View File


documentation/getting-started/img/idea-server-1.png → documentation/installing/img/idea-server-1.png View File


documentation/getting-started/img/idea-server-2.png → documentation/installing/img/idea-server-2.png View File


BIN
documentation/installing/img/installation-eclipse-hi.png View File


BIN
documentation/installing/img/installation-netbeans-hi.png View File


BIN
documentation/installing/img/installation-steps-hi.png View File


BIN
documentation/installing/img/installing-netbeans-1.png View File


BIN
documentation/installing/img/installing-netbeans-2.png View File


BIN
documentation/installing/img/installing-netbeans-3.png View File


BIN
documentation/installing/img/installing-netbeans-4.png View File


BIN
documentation/installing/img/installing-netbeans-5.png View File


BIN
documentation/installing/img/installing-netbeans-plugin-1.png View File


BIN
documentation/installing/img/installing-netbeans-plugin-2.png View File


BIN
documentation/installing/img/installing-netbeans-plugin-3.png View File


BIN
documentation/installing/img/notification-center-overview.png View File


BIN
documentation/installing/img/notification-center-popup.png View File


documentation/getting-started/img/plugin-install-addsite.png → documentation/installing/img/plugin-install-addsite.png View File


documentation/getting-started/img/plugin-install-available.png → documentation/installing/img/plugin-install-available.png View File


Some files were not shown because too many files changed in this diff

Loading…
Cancel
Save