List of usage examples for com.google.gwt.user.client.ui HorizontalPanel setCellVerticalAlignment
public void setCellVerticalAlignment(IsWidget w, VerticalAlignmentConstant align)
From source file:org.overlord.sramp.ui.client.widgets.dialogs.GrowlDialog.java
License:Apache License
/** * Constructor.//from w w w. ja v a2 s. c o m * @param title * @param message * @param type */ public GrowlDialog(String title, String message, GrowlType type) { super(false, false); // auto-hide=false, modal=false this.title = new Label(title); this.title.setStyleName("growlTitle"); closeButton = new Anchor("X"); closeButton.setStyleName("close"); HorizontalPanel titlePanel = new HorizontalPanel(); titlePanel.setWidth("100%"); titlePanel.setStyleName("growlTitleBar"); titlePanel.add(this.title); titlePanel.add(closeButton); titlePanel.setCellHorizontalAlignment(closeButton, HasHorizontalAlignment.ALIGN_RIGHT); titlePanel.setCellVerticalAlignment(closeButton, HasVerticalAlignment.ALIGN_MIDDLE); main = new VerticalPanel(); main.setStyleName("growlContent"); main.add(titlePanel); setMessage(message, type); setWidget(main); setStyleName("growlDialog"); closeButton.addClickHandler(new ClickHandler() { @Override public void onClick(ClickEvent event) { hide(); } }); }
From source file:org.overlord.sramp.ui.client.widgets.dialogs.GrowlDialog.java
License:Apache License
/** * Sets the dialog's message (directly as a {@link Widget}). This variant allows clients * to set rich HTML as the growl content, complete with behavior (event handlers). * @param message// w ww .j av a 2 s. c o m */ public void setMessage(Widget message, GrowlType type) { if (this.message != null) { main.remove(this.message); } FlowPanel messageWrapper = new FlowPanel(); messageWrapper.setStyleName("growlMessage"); if (type == GrowlType.error) { HorizontalPanel errorPanel = new HorizontalPanel(); Widget icon = new InlineLabel(" "); icon.setStyleName("errorMessage"); errorPanel.add(icon); errorPanel.add(message); errorPanel.setCellWidth(icon, "1%"); errorPanel.setCellVerticalAlignment(icon, HasVerticalAlignment.ALIGN_MIDDLE); messageWrapper.add(errorPanel); } else { messageWrapper.add(message); } this.message = messageWrapper; main.add(messageWrapper); setGrowlType(type); }
From source file:org.pentaho.gwt.widgets.client.listbox.DefaultListItem.java
License:Open Source License
private void formatWidget(HorizontalPanel panel) { panel.sinkEvents(Event.MOUSEEVENTS); if (img != null) { Image i = new Image(img.getUrl(), img.getOriginLeft(), img.getOriginTop(), img.getWidth(), img.getHeight());// w w w . ja va 2 s . c om panel.add(i); panel.setCellVerticalAlignment(i, HasVerticalAlignment.ALIGN_MIDDLE); i.getElement().getStyle().setProperty("marginRight", "5px"); //$NON-NLS-1$ //$NON-NLS-2$ } else if (extraWidget != null) { Element ele = DOM.clone(extraWidget.getElement(), true); Widget w = new WrapperWidget(ele); panel.add(w); panel.setCellVerticalAlignment(w, HasVerticalAlignment.ALIGN_MIDDLE); w.getElement().getStyle().setProperty("marginRight", "5px"); //$NON-NLS-1$ //$NON-NLS-2$ } Label label = new Label(text); label.getElement().getStyle().setProperty("cursor", "pointer"); //$NON-NLS-1$ //$NON-NLS-2$ label.setWidth("100%"); //$NON-NLS-1$ SimplePanel sp = new SimplePanel(); sp.getElement().getStyle().setProperty("overflowX", "auto"); //$NON-NLS-1$ //$NON-NLS-2$ sp.add(label); panel.add(sp); panel.setCellWidth(sp, "100%"); //$NON-NLS-1$ panel.setCellVerticalAlignment(label, HasVerticalAlignment.ALIGN_MIDDLE); ElementUtils.preventTextSelection(panel.getElement()); // label.setStylePrimaryName("custom-list-item"); //$NON-NLS-1$ panel.setWidth("100%"); //$NON-NLS-1$ }
From source file:org.pentaho.gwt.widgets.client.utils.ButtonHelper.java
License:Open Source License
public static String createButtonLabel(Image img, String text, ButtonLabelType type, String cssName) { final HTML html = new HTML(text, false); if (cssName != null) { html.addStyleDependentName(cssName); img.addStyleDependentName(cssName); }//from w ww .j av a 2 s . c o m if (type == ButtonLabelType.TEXT_ONLY) { return text; } else if (type == ButtonLabelType.TEXT_ON_LEFT || type == ButtonLabelType.TEXT_ON_RIGHT) { HorizontalPanel hpanel = new HorizontalPanel(); if (cssName != null) { hpanel.addStyleName(cssName); } if (type == ButtonLabelType.TEXT_ON_LEFT) { hpanel.add(html); hpanel.add(new HTML(" ")); //$NON-NLS-1$ hpanel.add(img); } else { hpanel.add(img); hpanel.add(new HTML(" ")); //$NON-NLS-1$ hpanel.add(html); } hpanel.setCellVerticalAlignment(html, HasVerticalAlignment.ALIGN_MIDDLE); hpanel.setCellVerticalAlignment(img, HasVerticalAlignment.ALIGN_MIDDLE); return hpanel.getElement().getString(); } else { VerticalPanel vpanel = new VerticalPanel(); if (type == ButtonLabelType.TEXT_ON_TOP) { vpanel.add(html); vpanel.add(img); } else { vpanel.add(img); vpanel.add(html); } vpanel.setCellHorizontalAlignment(html, HasHorizontalAlignment.ALIGN_CENTER); vpanel.setCellHorizontalAlignment(img, HasHorizontalAlignment.ALIGN_CENTER); return vpanel.getElement().getString(); } }
From source file:org.pentaho.gwt.widgets.client.utils.ButtonHelper.java
License:Open Source License
public static Panel createButtonElement(Image img, String text, ButtonLabelType type, String cssName) { final HTML html = new HTML(text, false); if (cssName != null) { html.addStyleDependentName(cssName); img.addStyleDependentName(cssName); }/*from ww w . j a v a 2 s. c om*/ if (type == ButtonLabelType.TEXT_ONLY) { SimplePanel sp = new SimplePanel(); sp.add(html); return sp; } else if (type == ButtonLabelType.TEXT_ON_LEFT || type == ButtonLabelType.TEXT_ON_RIGHT) { HorizontalPanel hpanel = new HorizontalPanel(); if (cssName != null) { hpanel.addStyleName(cssName); } if (type == ButtonLabelType.TEXT_ON_LEFT) { hpanel.add(html); hpanel.add(new HTML(" ")); //$NON-NLS-1$ hpanel.add(img); } else { hpanel.add(img); hpanel.add(new HTML(" ")); //$NON-NLS-1$ hpanel.add(html); } hpanel.setCellVerticalAlignment(html, HasVerticalAlignment.ALIGN_MIDDLE); hpanel.setCellVerticalAlignment(img, HasVerticalAlignment.ALIGN_MIDDLE); return hpanel; } else { VerticalPanel vpanel = new VerticalPanel(); if (type == ButtonLabelType.TEXT_ON_TOP) { vpanel.add(html); vpanel.add(img); } else { vpanel.add(img); vpanel.add(html); } vpanel.setCellHorizontalAlignment(html, HasHorizontalAlignment.ALIGN_CENTER); vpanel.setCellHorizontalAlignment(img, HasHorizontalAlignment.ALIGN_CENTER); return vpanel; } }
From source file:org.pentaho.mantle.client.dialogs.scheduling.NewScheduleDialog.java
License:Open Source License
private void createUI() { VerticalPanel content = new VerticalPanel(); HorizontalPanel scheduleNameLabelPanel = new HorizontalPanel(); Label scheduleNameLabel = new Label(Messages.getString("scheduleNameColon")); scheduleNameLabel.addStyleName("schedule-name"); scheduleNameLabel.setHorizontalAlignment(HasHorizontalAlignment.ALIGN_LEFT); Label scheduleNameInfoLabel = new Label(Messages.getString("scheduleNameInfo")); scheduleNameInfoLabel.setStyleName("msg-Label"); scheduleNameInfoLabel.addStyleName("schedule-name-info"); scheduleNameLabelPanel.add(scheduleNameLabel); scheduleNameLabelPanel.add(scheduleNameInfoLabel); String defaultName = filePath.substring(filePath.lastIndexOf("/") + 1, filePath.lastIndexOf(".")); scheduleNameTextBox.getElement().setId("schedule-name-input"); scheduleNameTextBox.setText(defaultName); content.add(scheduleNameLabelPanel); content.add(scheduleNameTextBox);//w w w . j av a 2 s. c o m Label scheduleLocationLabel = new Label(Messages.getString("generatedContentLocation")); scheduleLocationLabel.setStyleName(ScheduleEditor.SCHEDULE_LABEL); content.add(scheduleLocationLabel); Button browseButton = new Button(Messages.getString("select")); browseButton.addClickHandler(new ClickHandler() { public void onClick(ClickEvent event) { final SelectFolderDialog selectFolder = new SelectFolderDialog(); selectFolder.setCallback(new IDialogCallback() { public void okPressed() { scheduleLocationTextBox.setText(selectFolder.getSelectedPath()); } public void cancelPressed() { } }); selectFolder.center(); } }); browseButton.setStyleName("pentaho-button"); browseButton.getElement().setId("schedule-dialog-select-button"); ChangeHandler ch = new ChangeHandler() { public void onChange(ChangeEvent event) { updateButtonState(); } }; KeyUpHandler kh = new KeyUpHandler() { public void onKeyUp(KeyUpEvent event) { updateButtonState(); } }; if (keyHandlerReg != null) { keyHandlerReg.removeHandler(); } if (changeHandlerReg != null) { changeHandlerReg.removeHandler(); } keyHandlerReg = scheduleNameTextBox.addKeyUpHandler(kh); changeHandlerReg = scheduleLocationTextBox.addChangeHandler(ch); scheduleNameTextBox.addChangeHandler(ch); scheduleLocationTextBox.getElement().setId("generated-content-location"); HorizontalPanel locationPanel = new HorizontalPanel(); scheduleLocationTextBox.setEnabled(false); locationPanel.add(scheduleLocationTextBox); locationPanel.setCellVerticalAlignment(scheduleLocationTextBox, HasVerticalAlignment.ALIGN_MIDDLE); locationPanel.add(browseButton); content.add(locationPanel); if (jsJob != null) { scheduleNameTextBox.setText(jsJob.getJobName()); scheduleLocationTextBox.setText(jsJob.getOutputPath()); } setContent(content); content.getElement().getParentElement().addClassName("schedule-dialog-content"); content.getElement().getParentElement().addClassName("schedule-dialog-content-crystal"); content.getElement().getParentElement().addClassName("schedule-dialog-content-onyx"); content.getElement().getParentElement().removeClassName("dialog-content"); content.getElement().getParentElement().getStyle().clearPadding(); content.getElement().getStyle().clearHeight(); content.getParent().setHeight("100%"); content.getElement().getParentElement().getStyle().setVerticalAlign(VerticalAlign.TOP); okButton.getParent().getParent().setStyleName("button-panel"); updateButtonState(); setSize("650px", "450px"); validateScheduleLocationTextBox(); addStyleName("new-schedule-dialog"); }
From source file:org.pentaho.mantle.client.dialogs.scheduling.ScheduleOutputLocationDialog.java
License:Open Source License
private void createUI() { VerticalPanel content = new VerticalPanel(); HorizontalPanel scheduleNameLabelPanel = new HorizontalPanel(); scheduleNameLabel = new Label(Messages.getString("scheduleNameColon")); scheduleNameLabel.setHorizontalAlignment(HasHorizontalAlignment.ALIGN_LEFT); Label scheduleNameInfoLabel = new Label(Messages.getString("scheduleNameInfo")); scheduleNameInfoLabel.setStyleName("msg-Label"); scheduleNameLabelPanel.add(scheduleNameLabel); scheduleNameLabelPanel.add(scheduleNameInfoLabel); String defaultName = filePath.substring(filePath.lastIndexOf("/") + 1, filePath.lastIndexOf(".")); scheduleNameTextBox.getElement().setId("schedule-name-input"); scheduleNameTextBox.setText(defaultName); content.add(scheduleNameLabelPanel); content.add(scheduleNameTextBox);// w w w. ja va2 s . c o m Label scheduleLocationLabel = new Label(Messages.getString("generatedContentLocation")); scheduleLocationLabel.setStyleName(ScheduleEditor.SCHEDULE_LABEL); content.add(scheduleLocationLabel); Button browseButton = new Button(Messages.getString("select")); browseButton.addClickHandler(new ClickHandler() { public void onClick(ClickEvent event) { final SelectFolderDialog selectFolder = new SelectFolderDialog(); selectFolder.setCallback(new IDialogCallback() { public void okPressed() { scheduleLocationTextBox.setText(selectFolder.getSelectedPath()); } public void cancelPressed() { } }); selectFolder.center(); } }); browseButton.setStyleName("pentaho-button"); ChangeHandler ch = new ChangeHandler() { public void onChange(ChangeEvent event) { updateButtonState(); } }; KeyUpHandler kh = new KeyUpHandler() { public void onKeyUp(KeyUpEvent event) { updateButtonState(); } }; if (keyHandlerReg != null) { keyHandlerReg.removeHandler(); } if (changeHandlerReg != null) { changeHandlerReg.removeHandler(); } keyHandlerReg = scheduleNameTextBox.addKeyUpHandler(kh); changeHandlerReg = scheduleLocationTextBox.addChangeHandler(ch); scheduleNameTextBox.addChangeHandler(ch); scheduleLocationTextBox.getElement().setId("generated-content-location"); HorizontalPanel locationPanel = new HorizontalPanel(); scheduleLocationTextBox.setEnabled(false); locationPanel.add(scheduleLocationTextBox); locationPanel.setCellVerticalAlignment(scheduleLocationTextBox, HasVerticalAlignment.ALIGN_MIDDLE); locationPanel.add(browseButton); content.add(locationPanel); setContent(content); content.getElement().getStyle().clearHeight(); content.getElement().getParentElement().getStyle().setVerticalAlign(VerticalAlign.TOP); content.getParent().setHeight("100%"); okButton.getParent().getParent().setStyleName("button-panel"); updateButtonState(); setSize("650px", "450px"); validateScheduleLocationTextBox(); }
From source file:org.pentaho.pac.client.AdminConsoleToolbar.java
License:Open Source License
public AdminConsoleToolbar(final IRefreshableAdminConsole console, final String helpUrlOverride) { super();/*from w ww.j a va2 s. c om*/ setStyleName("adminconsole-toolbar"); //$NON-NLS-1$ //Left end-cap SimplePanel leftCap = new SimplePanel(); leftCap.setStyleName("adminconsole-toolbar_left"); //$NON-NLS-1$ add(leftCap); this.setCellWidth(leftCap, "5px"); //$NON-NLS-1$ //the body of the toolbar HorizontalPanel centerPanel = new HorizontalPanel(); centerPanel.setStyleName("adminconsole-toolbar_center"); //$NON-NLS-1$ add(centerPanel); //Right end-cap SimplePanel rightCap = new SimplePanel(); rightCap.setStyleName("adminconsole-toolbar_right"); //$NON-NLS-1$ add(rightCap); this.setCellWidth(rightCap, "6px"); //$NON-NLS-1$ SimplePanel indicatorsPanel = new SimplePanel(); indicatorsPanel.setStyleName("toolBarIndicators"); //$NON-NLS-1$ centerPanel.add(indicatorsPanel); SimplePanel indicatorsLeft = new SimplePanel(); indicatorsLeft.setStyleName("indicators_left"); //$NON-NLS-1$ indicatorsPanel.add(indicatorsLeft); indicatorsRight.setStyleName("indicators_right"); //$NON-NLS-1$ indicatorsLeft.add(indicatorsRight); contructToolbarIndicator(); setIndicators(toolbarIndicator); Image refreshConsoleImage = PacImageBundle.getBundle().refreshIcon().createImage(); refreshConsoleImage.setTitle(Messages.getString("resetServer")); //$NON-NLS-1$ refreshConsoleImage.addClickListener(new ClickListener() { public void onClick(Widget sender) { console.refresh(); } }); addImageButton(refreshConsoleImage); Image helpImage = PacImageBundle.getBundle().helpIcon().createImage(); helpImage.setTitle(Messages.getString("help")); //$NON-NLS-1$ helpImage.addClickListener(new ClickListener() { public void onClick(Widget sender) { if (helpUrlOverride != null && helpUrlOverride.length() > 0) { Window.open(helpUrlOverride, Messages.getString("userGuide"), ""); //$NON-NLS-1$ //$NON-NLS-2$ } else { PacServiceFactory.getPacService().getHelpUrl(new AsyncCallback<String>() { public void onFailure(Throwable arg0) { //TODO show error message } public void onSuccess(String helpUrl) { Window.open(helpUrl, Messages.getString("userGuide"), ""); //$NON-NLS-1$ //$NON-NLS-2$ } }); } } }); addImageButton(helpImage); centerPanel.add(buttonsPanel); centerPanel.setCellHorizontalAlignment(buttonsPanel, HorizontalPanel.ALIGN_RIGHT); centerPanel.setCellVerticalAlignment(buttonsPanel, HorizontalPanel.ALIGN_MIDDLE); statusTimer = new Timer() { public void run() { PacServiceFactory.getPacService().isBiServerAlive(new AsyncCallback<Object>() { public void onSuccess(Object isAlive) { toolbarIndicator.displayServerAlive(); } public void onFailure(Throwable caught) { toolbarIndicator.displayServerDead(); } }); } }; PacServiceFactory.getPacService().getBiServerStatusCheckPeriod(new AsyncCallback<Integer>() { public void onSuccess(Integer checkPeriod) { if (checkPeriod > 0) { statusTimer.scheduleRepeating(checkPeriod); } } public void onFailure(Throwable caught) { // otherwise we don't know what the status check period is, so don't schedule anything } }); }
From source file:org.rstudio.studio.client.common.rpubs.ui.RPubsUploadDialog.java
License:Open Source License
@Override protected Widget createMainWidget() { Styles styles = RESOURCES.styles();//from w ww . j a va 2 s . c o m SimplePanel mainPanel = new SimplePanel(); mainPanel.addStyleName(styles.mainWidget()); VerticalPanel verticalPanel = new VerticalPanel(); HorizontalPanel headerPanel = new HorizontalPanel(); headerPanel.addStyleName(styles.headerPanel()); headerPanel.add(new Image(RESOURCES.publishLarge())); Label headerLabel = new Label("Publish to RPubs"); headerLabel.addStyleName(styles.headerLabel()); headerPanel.add(headerLabel); headerPanel.setCellVerticalAlignment(headerLabel, HasVerticalAlignment.ALIGN_MIDDLE); verticalPanel.add(headerPanel); String msg; if (!isPublished_) { msg = "RPubs is a free service from RStudio for sharing " + "documents on the web. Click Publish to get " + "started."; } else { msg = "This document has already been published on RPubs. You can " + "choose to either update the existing RPubs document, or " + "create a new one."; } Label descLabel = new Label(msg); descLabel.addStyleName(styles.descLabel()); verticalPanel.add(descLabel); // if we have a generator then show title and comment UI if (htmlGenerator_ != null) { Label titleLabel = new Label("Title (optional):"); titleLabel.addStyleName(styles.fieldLabel()); verticalPanel.add(titleLabel); titleTextBox_ = new TextBox(); titleTextBox_.addStyleName(styles.titleTextBox()); titleTextBox_.getElement().setAttribute("spellcheck", "false"); verticalPanel.add(titleTextBox_); Label commentLabel = new Label("Comment (optional):"); commentLabel.addStyleName(styles.fieldLabel()); verticalPanel.add(commentLabel); commentTextArea_ = new FixedTextArea(6); commentTextArea_.addStyleName(styles.commentTextArea()); verticalPanel.add(commentTextArea_); // not using either for now titleLabel.setVisible(false); titleTextBox_.setVisible(false); commentLabel.setVisible(false); commentTextArea_.setVisible(false); previewButton_ = new ThemedButton("Preview"); previewButton_.addClickHandler(new ClickHandler() { @Override public void onClick(ClickEvent event) { htmlGenerator_.generateRPubsHtml(titleTextBox_.getText().trim(), commentTextArea_.getText().trim(), new CommandWithArg<String>() { @Override public void execute(String rpubsFile) { globalDisplay_.showHtmlFile(rpubsFile); } }); } }); addLeftButton(previewButton_); } HTML warningLabel = new HTML("<strong>IMPORTANT: All documents published to RPubs are " + "publicly visible.</strong> You should " + "only publish documents that you wish to share publicly."); warningLabel.addStyleName(styles.warningLabel()); verticalPanel.add(warningLabel); ThemedButton cancelButton = createCancelButton(new Operation() { @Override public void execute() { // if an upload is in progress then terminate it if (uploadInProgress_) { server_.rpubsTerminateUpload(contextId_, new VoidServerRequestCallback()); if (uploadProgressWindow_ != null) uploadProgressWindow_.close(); } } }); continueButton_ = new ThemedButton("Publish", new ClickHandler() { @Override public void onClick(ClickEvent event) { performUpload(false); } }); updateButton_ = new ThemedButton("Update Existing", new ClickHandler() { @Override public void onClick(ClickEvent event) { performUpload(true); } }); createButton_ = new ThemedButton("Create New", new ClickHandler() { @Override public void onClick(ClickEvent event) { performUpload(false); } }); if (!isPublished_) { addOkButton(continueButton_); addCancelButton(cancelButton); } else { addOkButton(updateButton_); addButton(createButton_); addCancelButton(cancelButton); } mainPanel.setWidget(verticalPanel); return mainPanel; }
From source file:org.tagaprice.client.features.startmanagement.desktopView.StartViewImpl.java
License:Creative Commons License
public StartViewImpl() { initWidget(frame);//from ww w . j ava 2s .c o m frame.setHeader(title); //body vePa.setWidth("100%"); frame.setBody(vePa); //get invite vePa.add(getInvitation); getInvitation.setStyleName("startInviteButton"); getInvitation.addClickHandler(new ClickHandler() { @Override public void onClick(ClickEvent arg0) { _presenter.onInvieteMe(); } }); //key HorizontalPanel inviteKeyHoPa = new HorizontalPanel(); inviteationKeyText.setStyleName("startRegisterKeyText"); inviteationKeyText.setText("Your Invitation Code"); inviteKeyHoPa.add(inviteationKeyText); Button startRegisterButton = new Button("Register", new ClickHandler() { @Override public void onClick(ClickEvent arg0) { _presenter.onRegisterWithKey(); } }); startRegisterButton.setStyleName("startRegisterKeyButton"); inviteKeyHoPa.add(startRegisterButton); inviteKeyHoPa.setCellVerticalAlignment(startRegisterButton, VerticalPanel.ALIGN_MIDDLE); vePa.add(inviteKeyHoPa); vePa.setCellHorizontalAlignment(inviteKeyHoPa, HorizontalPanel.ALIGN_CENTER); inviteationKeyText.addClickHandler(new ClickHandler() { @Override public void onClick(ClickEvent arg0) { if (inviteationKeyText.getText().equals("Your Invitation Code")) inviteationKeyText.setText(""); } }); vePa.add(new HTML("<hr />")); vePa.add(new HTML( "<h1>The Idea</h1>A consumer-created location-aware price comparison site.<h1>Why do we need that?</h1><ul> <li>There is no transparent market for food.</li> <li>The prices between shops and bars are drifting apart.</li> <li>Extreme price differences between bars (even those close to each other)</li> <li>The EU stopped package size standards, causing some producers to try to sell smaller packages for the same price.</li></ul><h1>What's your benefit?</h1><ul> <li>compare prices and save money</li> <li>finding menus for restaurants that don't put them online themselves.</li> <li>a transparent market</li> <li>quality and quantity comparison of shops and product. (price, ingredients, pics, user comments, labels...)</li> <li>free household account management</li> <li>open shop database (location-aware)</li> <li>open product database</li> <li>open bar code and ISBN database</li> <li>everything has a history (it's possible to compare prices not only between shops but also over time)</li></ul><h1>How can we implement this vision?</h1><h2>You</h2><ul> <li>enter and update products, shops</li> <li>enter prices<ul> <li>bytyping in your receipt and add it to your household accounts</li> <li>by taking a picture of your receipt with your mobile phone and TagAPrice will automatically add it to your household accounts</li></ul></li> <li><strong>Donate</strong></li></ul><h2>Open Source</h2><ul> <li>Working togehter to make TagAPrice more comfortable and feature-rich.</li> <li>Code License: AGPLv3</li></ul><h2>Open Data</h2><ul> <li>Create mashups and mobile apps<ul> <li>bydownload a full dump of the DB</li> <li>by using the API (json, xml, ...)</li></ul></li> <li>Use the API to find shops (we have all shops from OpenStreetMap and maybe more)</li> <li>Use the API to find a product at the nearest shop</li> <li>Use the API to find the price of a product at the nearest shop</li> <li>Use the API to find a menu and the price in a special restaurante</li> <li>Use the API to insert the menu in your restaurant</li> <li>Share products, shops, prices via twitter, facebook, ...</li> <li>Data License: <a href=\"http://creativecommons.org/licenses/by-sa/3.0/\">Creative Commons Attribution-ShareAlike 3.0 Unported License</a></li></ul><h2>The Team</h2><ul> <li>We are a team of students at Technical University of Vienna, and University Copenhagen</li> <li>contributors from all over the world.</li></ul>")); }