/* * Copyright 2008 University of Prince Edward Island * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package ca.upei.ic.timetable.client; import com.google.gwt.user.client.ui.Button; import com.google.gwt.user.client.ui.ClickListener; import com.google.gwt.user.client.ui.DialogBox; import com.google.gwt.user.client.ui.HTML; import com.google.gwt.user.client.ui.KeyboardListener; import com.google.gwt.user.client.ui.ScrollPanel; import com.google.gwt.user.client.ui.VerticalPanel; import com.google.gwt.user.client.ui.Widget; /** * A view that show system messages * @author felix * */ public class MessageView implements View { private MessageViewController controller_; private DialogBox dialogBox_; private VerticalPanel panel_; public MessageView(MessageViewController controller) { controller_ = controller; dialogBox_ = new DialogBox(true, true); dialogBox_.setText("Messages"); dialogBox_.setAnimationEnabled(true); dialogBox_.hide(); // XXX a hack to make sure the dialog display top most dialogBox_.getElement().getStyle().setProperty("z-index", "100"); ScrollPanel scrolled = new ScrollPanel(); scrolled.setPixelSize(350, 250); panel_ = new VerticalPanel(); panel_.setWidth("232px"); scrolled.add(panel_); Button closeButton = new Button("Close"); closeButton.addClickListener(new ClickListener() { public void onClick(Widget sender) { dialogBox_.hide(); } }); closeButton.addKeyboardListener(new KeyboardListener() { public void onKeyDown(Widget sender, char keyCode, int modifiers) { } public void onKeyPress(Widget sender, char keyCode, int modifiers) { if (keyCode == KeyboardListener.KEY_ESCAPE) dialogBox_.hide(); } public void onKeyUp(Widget sender, char keyCode, int modifiers) { } }); Button clearButton = new Button("Clear"); clearButton.addClickListener(new ClickListener() { public void onClick(Widget sender) { clearMessage(); } }); dialogBox_.setWidget( PanelUtils.verticalPanel( scrolled, PanelUtils.horizontalPanel(closeButton, clearButton) ) ); } public void addSubView(View subView) { throw new RuntimeException("Not Implemented."); } public void log(String msg) { panel_.add(new HTML(msg)); dialogBox_.show(); } public void debug(String msg) { log(msg); } public void clearMessage() { panel_.clear(); } public ViewController getController() { return controller_; } public Widget getWidget() { return dialogBox_; } public void hide() { dialogBox_.show(); } public void show() { dialogBox_.hide(); } }