| /* |
| * Copyright 2010 Google Inc. |
| * |
| * 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 com.google.gwt.sample.logexample.client; |
| |
| import com.google.gwt.core.client.GWT; |
| import com.google.gwt.dom.client.SpanElement; |
| import com.google.gwt.event.dom.client.ChangeEvent; |
| import com.google.gwt.event.dom.client.ClickEvent; |
| import com.google.gwt.uibinder.client.UiBinder; |
| import com.google.gwt.uibinder.client.UiField; |
| import com.google.gwt.uibinder.client.UiHandler; |
| import com.google.gwt.user.client.ui.HTMLPanel; |
| import com.google.gwt.user.client.ui.ListBox; |
| import com.google.gwt.user.client.ui.Panel; |
| |
| import java.util.logging.Level; |
| import java.util.logging.Logger; |
| |
| /** |
| * A section allowing the user to change the level of a logger and log messages |
| * to that logger. |
| */ |
| public class OneLoggerController { |
| interface MyUiBinder extends UiBinder<HTMLPanel, OneLoggerController> { } |
| private static MyUiBinder uiBinder = GWT.create(MyUiBinder.class); |
| @UiField ListBox levelTextBox; |
| @UiField SpanElement loggerName; |
| @UiField ListBox logTextBox; |
| private Logger logger; |
| private Panel panel; |
| |
| public OneLoggerController(Logger logger, String name) { |
| this.logger = logger; |
| panel = uiBinder.createAndBindUi(this); |
| loggerName.setInnerText(name); |
| addLevelButtons(); |
| addLogButtons(); |
| } |
| |
| public Panel getPanel() { |
| return panel; |
| } |
| |
| @UiHandler("levelTextBox") |
| void handleClick(ChangeEvent e) { |
| Level level = Level.parse(levelTextBox.getItemText( |
| levelTextBox.getSelectedIndex())); |
| logger.log(Level.SEVERE, |
| "Setting level to: " + level.getName()); |
| logger.setLevel(level); |
| } |
| |
| @UiHandler("exceptionButton") |
| void handleExceptionClick(ClickEvent e) { |
| logger.log(Level.SEVERE, "Fake Null Exception Hit", |
| new NullPointerException()); |
| } |
| |
| @UiHandler("logButton") |
| void handleLogClick(ClickEvent e) { |
| Level level = Level.parse(logTextBox.getItemText( |
| logTextBox.getSelectedIndex())); |
| logger.log(level, "This is a client log message"); |
| } |
| |
| private void addLevelButtons() { |
| levelTextBox.addItem("OFF"); |
| levelTextBox.addItem("SEVERE"); |
| levelTextBox.addItem("WARNING"); |
| levelTextBox.addItem("INFO"); |
| levelTextBox.addItem("CONFIG"); |
| levelTextBox.addItem("FINE"); |
| levelTextBox.addItem("FINER"); |
| levelTextBox.addItem("FINEST"); |
| levelTextBox.addItem("ALL"); |
| String currentLevel = this.getLevel(logger); |
| for (int i = 0; i < levelTextBox.getItemCount(); i++) { |
| if (currentLevel.equalsIgnoreCase(levelTextBox.getItemText(i))) { |
| levelTextBox.setSelectedIndex(i); |
| } |
| } |
| } |
| |
| private void addLogButtons() { |
| logTextBox.addItem("SEVERE"); |
| logTextBox.addItem("WARNING"); |
| logTextBox.addItem("INFO"); |
| logTextBox.addItem("CONFIG"); |
| logTextBox.addItem("FINE"); |
| logTextBox.addItem("FINER"); |
| logTextBox.addItem("FINEST"); |
| String currentLevel = this.getLevel(logger); |
| for (int i = 0; i < logTextBox.getItemCount(); i++) { |
| if (currentLevel.equalsIgnoreCase(logTextBox.getItemText(i))) { |
| logTextBox.setSelectedIndex(i); |
| } |
| } |
| } |
| |
| private String getLevel(Logger logger) { |
| if (logger != null) { |
| if (logger.getLevel() != null) { |
| return logger.getLevel().getName(); |
| } |
| return getLevel(logger.getParent()); |
| } |
| return ""; |
| } |
| } |