001 /* PAVLOV -- Multiple Choice Study System 002 * Copyright (C) 2000 - 2004 T.J. Willis 003 * 004 * This program is free software; you can redistribute it and/or 005 * modify it under the terms of the GNU General Public License 006 * as published by the Free Software Foundation; either version 2 007 * of the License, or (at your option) any later version. 008 * 009 * This program is distributed in the hope that it will be useful, 010 * but WITHOUT ANY WARRANTY; without even the implied warranty of 011 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 012 * GNU General Public License for more details. 013 * 014 * You should have received a copy of the GNU General Public License 015 * along with this program; if not, write to the Free Software 016 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111, USA. 017 * 018 */ 019 package net.sourceforge.pavlov.pluglets.feedback.random; 020 021 022 /** 023 * A visual feedback mode is a strategy for altering an image 024 * based on a user's correct or incorrect response. 025 * 026 * @version $Revision: 1.3 $ 027 */ 028 public class DefaultVisualFeedbackMode { 029 /** 030 * The initial size of an image in this mode. 031 * 032 */ 033 protected int initialSize; 034 /** 035 * The minimum size of an image in this mode. 036 * 037 */ 038 protected int minimumSize; 039 /** 040 * How much the size is increased for a correct response. 041 * 042 */ 043 protected int increment; 044 /** 045 * How much the size is decreased for an incorrect response. 046 * 047 */ 048 protected int decrement; 049 /** 050 * Current image size. 051 * 052 */ 053 protected int size; 054 /** 055 * A descriptive name for this mode. 056 * 057 */ 058 protected String name; 059 /** 060 * A message describing how the image was changed in response to the 061 * last answer. 062 * 063 */ 064 protected String message; 065 066 /** 067 * Creates a new <code>DefaultVisualFeedbackMode</code> instance. 068 * 069 * @param is an <code>int</code> value 070 * @param inc an <code>int</code> value 071 * @param dec an <code>int</code> value 072 * @param minSz an <code>int</code> value 073 */ 074 public DefaultVisualFeedbackMode(final int is, final int inc, final int dec, final int minSz) { 075 initialSize = is; 076 increment = inc; 077 decrement = dec; 078 size = initialSize; 079 minimumSize = minSz; 080 assert initialSize >= minimumSize: "Bad initial size"; 081 name = "Unnamed Mode"; 082 message = ""; 083 } 084 085 // override these for special behaviours 086 /** 087 * Gets the current image size. 088 * 089 * @return an <code>int</code> value 090 */ 091 public int getSize() { 092 return size; 093 } 094 095 /** 096 * Sets the current image size. Will not set below the minimum size. 097 * 098 * @param what an <code>int</code> value 099 */ 100 public void setSize(final int what) { 101 if (what < minimumSize) size = minimumSize; 102 else size = what; 103 } 104 105 /** 106 * The user answered correctly. 107 * 108 */ 109 public void rightEvent() { 110 size = size + increment; 111 } 112 113 /** 114 * The user answered incorrectly. 115 * 116 */ 117 public void wrongEvent() { 118 size = size - decrement; 119 if (size < minimumSize) size = minimumSize; 120 } 121 122 /** 123 * Returns this mode's name as a String. 124 * 125 * @return a <code>String</code> value 126 */ 127 public String toString() { 128 return name; 129 } 130 131 /** 132 * Set the user-understandable name for the behaviour of this mode. 133 * 134 * @param _n a <code>String</code> value 135 */ 136 public void setName(String _n) { 137 name = _n; 138 } 139 140 /** 141 * Return a user-understandable name for the behaviour of this mode. 142 * 143 * @return a <code>String</code> value 144 */ 145 public String getShortName() { 146 return "Beginner"; 147 } 148 149 /** 150 * Return a message that explains the feedback action taken. 151 * 152 * @return a <code>String</code> value 153 */ 154 public String getMessage() { 155 return message; 156 } 157 } 158