// -*- mode: java; c-basic-offset: 2; -*- // Copyright 2009-2011 Google, All Rights reserved // Copyright 2011-2012 MIT, All rights reserved // Released under the Apache License, Version 2.0 // http://www.apache.org/licenses/LICENSE-2.0 package com.google.appinventor.client.output; import com.google.appinventor.client.boxes.MotdBox; import com.google.appinventor.shared.rpc.Motd; import com.google.gwt.user.client.ui.Composite; import com.google.gwt.user.client.ui.HTML; import com.google.gwt.user.client.ui.VerticalPanel; /** * Output panel for displaying MOTD. * */ public final class MotdUi extends Composite { // Singleton build output instance private final static MotdUi INSTANCE = new MotdUi(); // UI elements private final VerticalPanel panel; private final HTML text; // So can manipulate the header and minimize/restore state. private MotdBox box; private Motd currentMotd = null; // last one we have seen /** * Returns singleton MOTD instance. * * @return motd output instance */ public static MotdUi getMotd() { return INSTANCE; } /** * Creates a new output panel for MOTD. */ private MotdUi() { // Initialize UI text = new HTML(); text.setSize("100%", "100%"); text.setStylePrimaryName("ode-Motd"); panel = new VerticalPanel(); panel.add(text); panel.setSize("100%", "100%"); panel.setCellHeight(text, "100%"); panel.setCellWidth(text, "100%"); initWidget(panel); } /** * Clears the current MOTD. */ public void clear() { text.setHTML(""); } public void setBox(MotdBox box) { this.box = box; } /** * Replace the current MOTD. * * @param motd new motd */ public void setMotd(Motd motd) { if (box == null) return; if ((currentMotd == null) || ! currentMotd.equals(motd)) { currentMotd = motd; box.setCaption(motd.getCaption()); if (motd.hasContent()) { text.setHTML(motd.getContent()); box.forceRestore(); } } } }