Mercurial > hg > release > thermostat-0.4
changeset 579:4082ce718f9f
Fix label associated to toggle on failure
review-thread: http://icedtea.classpath.org/pipermail/thermostat/2012-August/003009.html
reviewed-by: jerboaa, rkennke
author | Mario Torre <neugens.limasoftware@gmail.com> |
---|---|
date | Fri, 31 Aug 2012 17:49:45 +0200 |
parents | aa0d2cb96bb9 |
children | c95cd9ae6db4 |
files | thread/client-swing/pom.xml thread/client-swing/src/main/java/com/redhat/thermostat/thread/client/swing/impl/SwingThreadView.java thread/client-swing/src/main/java/com/redhat/thermostat/thread/client/swing/impl/ThreadAliveDaemonTimelinePanel.java thread/client-swing/src/test/java/com/redhat/thermostat/thread/client/swing/impl/SwingThreadViewTest.java |
diffstat | 4 files changed, 148 insertions(+), 3 deletions(-) [+] |
line wrap: on
line diff
--- a/thread/client-swing/pom.xml Fri Aug 31 17:49:39 2012 +0200 +++ b/thread/client-swing/pom.xml Fri Aug 31 17:49:45 2012 +0200 @@ -84,6 +84,12 @@ <version>${project.version}</version> </dependency> + <dependency> + <groupId>net.java.openjdk.cacio</groupId> + <artifactId>cacio-tta</artifactId> + <scope>test</scope> + </dependency> + </dependencies> <build>
--- a/thread/client-swing/src/main/java/com/redhat/thermostat/thread/client/swing/impl/SwingThreadView.java Fri Aug 31 17:49:39 2012 +0200 +++ b/thread/client-swing/src/main/java/com/redhat/thermostat/thread/client/swing/impl/SwingThreadView.java Fri Aug 31 17:49:45 2012 +0200 @@ -108,9 +108,7 @@ { @Override public void itemStateChanged(ItemEvent e) { - - if (skipNotification) return; - + ThreadAction action = null; if (e.getStateChange() == ItemEvent.SELECTED) { action = ThreadAction.START_LIVE_RECORDING; @@ -119,6 +117,9 @@ action = ThreadAction.STOP_LIVE_RECORDING; timelinePanel.setToggleText(t.localize(LocaleResources.START_RECORDING) + ":"); } + + if (skipNotification) return; + final ThreadAction toNotify = action; SwingWorker<Void, Void> worker = new SwingWorker<Void, Void>() { @Override
--- a/thread/client-swing/src/main/java/com/redhat/thermostat/thread/client/swing/impl/ThreadAliveDaemonTimelinePanel.java Fri Aug 31 17:49:39 2012 +0200 +++ b/thread/client-swing/src/main/java/com/redhat/thermostat/thread/client/swing/impl/ThreadAliveDaemonTimelinePanel.java Fri Aug 31 17:49:45 2012 +0200 @@ -128,8 +128,11 @@ ); toggleButton = new ToggleButton(); + toggleButton.setName("recordButton"); lblNewLabel = new JLabel("New label"); + lblNewLabel.setName("recordButtonText"); + GroupLayout gl_panel = new GroupLayout(panel); gl_panel.setHorizontalGroup( gl_panel.createParallelGroup(Alignment.TRAILING)
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/thread/client-swing/src/test/java/com/redhat/thermostat/thread/client/swing/impl/SwingThreadViewTest.java Fri Aug 31 17:49:45 2012 +0200 @@ -0,0 +1,135 @@ +/* + * Copyright 2012 Red Hat, Inc. + * + * This file is part of Thermostat. + * + * Thermostat is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published + * by the Free Software Foundation; either version 2, or (at your + * option) any later version. + * + * Thermostat is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Thermostat; see the file COPYING. If not see + * <http://www.gnu.org/licenses/>. + * + * Linking this code with other modules is making a combined work + * based on this code. Thus, the terms and conditions of the GNU + * General Public License cover the whole combination. + * + * As a special exception, the copyright holders of this code give + * you permission to link this code with independent modules to + * produce an executable, regardless of the license terms of these + * independent modules, and to copy and distribute the resulting + * executable under terms of your choice, provided that you also + * meet, for each linked independent module, the terms and conditions + * of the license of that module. An independent module is a module + * which is not derived from or based on this code. If you modify + * this code, you may extend this exception to your version of the + * library, but you are not obligated to do so. If you do not wish + * to do so, delete this exception statement from your version. + */ + +package com.redhat.thermostat.thread.client.swing.impl; + +import static org.junit.Assert.*; + +import java.lang.reflect.InvocationTargetException; +import java.util.Locale; + +import javax.swing.JButton; +import javax.swing.JFrame; + +import net.java.openjdk.cacio.ctc.junit.CacioFESTRunner; + +import org.fest.swing.annotation.GUITest; +import org.fest.swing.edt.FailOnThreadViolationRepaintManager; +import org.fest.swing.edt.GuiActionRunner; +import org.fest.swing.edt.GuiTask; +import org.fest.swing.fixture.FrameFixture; +import org.fest.swing.fixture.JButtonFixture; +import org.fest.swing.fixture.JLabelFixture; +import org.fest.swing.fixture.JToggleButtonFixture; +import org.junit.After; +import org.junit.AfterClass; +import org.junit.Before; +import org.junit.BeforeClass; +import org.junit.Test; +import org.junit.runner.RunWith; + +import com.redhat.thermostat.common.locale.Translate; +import com.redhat.thermostat.thread.client.common.locale.LocaleResources; + +@RunWith(CacioFESTRunner.class) +public class SwingThreadViewTest { + + private static final Translate t = LocaleResources.createLocalizer(); + + private SwingThreadView view; + + private JFrame frame; + private FrameFixture frameFixture; + + private static Locale locale; + + @BeforeClass + public static void setUpOnce() { + FailOnThreadViolationRepaintManager.install(); + locale = Locale.getDefault(); + Locale.setDefault(Locale.US); + } + + @AfterClass + public static void tearDownOnce() { + Locale.setDefault(locale); + } + + @After + public void tearDown() { + frameFixture.cleanUp(); + frameFixture = null; + } + + @Before + public void setUp() { + GuiActionRunner.execute(new GuiTask() { + @Override + protected void executeInEDT() throws Throwable { + view = new SwingThreadView(); + frame = new JFrame(); + frame.add(view.getUiComponent()); + } + }); + frameFixture = new FrameFixture(frame); + } + + @GUITest + @Test + public void verifyMonitorLabelChange() throws InvocationTargetException, InterruptedException { + frameFixture.show(); + + JToggleButtonFixture togglefixture = frameFixture.toggleButton("recordButton"); + JLabelFixture toggleTest = frameFixture.label("recordButtonText"); + + toggleTest.requireText(t.localize(LocaleResources.START_RECORDING) + ":"); + + togglefixture.click(); + + toggleTest.requireText(t.localize(LocaleResources.STOP_RECORDING) + ":"); + + // now try "programmatically" + + view.setRecording(true, true); + + toggleTest.requireText(t.localize(LocaleResources.STOP_RECORDING) + ":"); + + view.setRecording(false, false); + + toggleTest.requireText(t.localize(LocaleResources.START_RECORDING) + ":"); + } + +}