frysk.gui.memory
Class MemoryWindow

java.lang.Object
  extended by org.gnu.glib.Struct
      extended by org.gnu.glib.GObject
          extended by org.gnu.gtk.GtkObject
              extended by org.gnu.gtk.Widget
                  extended by org.gnu.gtk.Container
                      extended by org.gnu.gtk.Bin
                          extended by org.gnu.gtk.Window
                              extended by frysk.gui.memory.MemoryWindow
All Implemented Interfaces:
Saveable

public class MemoryWindow
extends org.gnu.gtk.Window
implements Saveable


Nested Class Summary
(package private)  class MemoryWindow.LockObserver
          Local Observer class used to poke this window from RunState when all the Tasks belonging to this window's Proc have been blocked.
 
Field Summary
private  int BYTE_BITS
           
private  boolean closed
           
protected static String[] colNames
           
private  org.gnu.gtk.DataColumn[] cols
           
private  org.gnu.gtk.TreeViewColumn[] columns
           
protected  boolean[] colVisible
           
protected static int currentFormat
           
private  Disassembler diss
           
private  MemoryFormatDialog formatDialog
           
private  org.gnu.gtk.Entry fromBox
           
private  org.gnu.gtk.SpinButton fromSpin
           
private  org.gnu.glade.LibGlade glade
           
static String gladePath
           
private  double lastKnownFrom
           
private  double lastKnownTo
           
private  org.gnu.gtk.TreePath lastPath
           
private  int LOC
           
private  MemoryWindow.LockObserver lock
           
private  org.gnu.gtk.TreeView memoryView
           
private  MemoryMap[] mmaps
           
private  org.gnu.gtk.ListStore model
           
private  boolean MW_active
           
private  Task myTask
           
private  int OBJ
           
private  Observable observable
           
private  Preferences prefs
           
private  boolean refreshLock
           
private  SimpleComboBox segmentCombo
           
private  int segmentIndex
           
private  ObservableLinkedList segmentList
           
private  org.gnu.gtk.ScrolledWindow swin
           
private  boolean toggle
           
 
Fields inherited from class org.gnu.glib.GObject
eventsInitialized
 
Constructor Summary
MemoryWindow(org.gnu.glade.LibGlade glade)
          The MemoryWindow displays the information stored at various locations in memory, starting from the current program counter to a user-defined region.
 
Method Summary
private  boolean addressAccessible(long address)
          return a boolean indicating whether or not this address is accessible.
private  void desensitize()
           
 void finishMemWin(Proc proc)
          Initializes the Glade file, the MemoryWindow itself, adds listeners and Assigns the Proc.
 boolean getClosed()
           
 MemoryWindow.LockObserver getLockObserver()
          Returns this MemoryWindow's LockObserver.
 Task getMyTask()
          Returns the Task being examined by this Window.
 void handleFromSpin(double val)
          When the 'From' SpinBox is changed, update the displayed information accordingly.
private  void handleSymbol(String symbolName)
          When the box is inputed a symbol, update the displayed information to the symbol.
 void handleToSpin(double val)
          When the 'To' SpinBox value is changed, update the displayed information accordingly.
 boolean hasTaskSet()
          Check to see if the task to be examined has already been set.
 void load(Preferences prefs)
          Loads the saved preferences of this window.
private  String padBytes(String s, boolean littleEndian, int diff)
          Pad this byte string with zeroes so that it is of proper size.
 void recalculate()
          Recalculate the memory information based on a new bitsize and/or radix, and then update the display.
private  void refreshList()
          Refresh and update the display of addresses and values from what is re-calculated and turned into BigIntegers.
private  void resensitize()
           
private  void resetPCAndList()
           
 void resetTask(Task task)
           
 void rowAppend(long i, org.gnu.gtk.TreeIter iter)
          Helper function for calculating memory information and putting it into rows to be displayed.
 void save(Preferences prefs)
          Saves the new preferences of this window.
 void setClosed(boolean closed)
           
 void setIsRunning(boolean running)
          Set the sensitivity of this window and the formatting window.
 void setObservable(Observable o)
           
 void setTask(Task myTask)
          Set the task for this MemoryWindow to examine.
private  String switchEndianness(String toReverse, boolean littleEndian)
          Switch the endianness of a binary string
 
Methods inherited from class org.gnu.gtk.Window
addAccelGroup, checkState, deiconify, destroy, finalize, fullscreen, getAcceptFocus, getDefaultIconList, getFocusOnMap, getFocusWidget, getGravity, getIcon, getIconList, getIconName, getPosition, getScreen, getSize, getSkipPagerHint, getSkipTaskbarHint, getTitle, getTransientParent, getType, getWindow, gtk_window_activate_default, gtk_window_activate_focus, gtk_window_add_accel_group, gtk_window_add_mnemonic, gtk_window_begin_move_drag, gtk_window_begin_resize_drag, gtk_window_deiconify, gtk_window_fullscreen, gtk_window_get_accept_focus, gtk_window_get_decorated, gtk_window_get_default_icon_list, gtk_window_get_default_size, gtk_window_get_destroy_with_parent, gtk_window_get_focus, gtk_window_get_frame_dimensions, gtk_window_get_gravity, gtk_window_get_has_frame, gtk_window_get_icon_list, gtk_window_get_icon, gtk_window_get_mnemonic_modifier, gtk_window_get_modal, gtk_window_get_position, gtk_window_get_resizable, gtk_window_get_role, gtk_window_get_screen, gtk_window_get_size, gtk_window_get_skip_pager_hint, gtk_window_get_skip_taskbar_hint, gtk_window_get_title, gtk_window_get_transient_for, gtk_window_get_type_hint, gtk_window_get_type, gtk_window_has_toplevel_focus, gtk_window_iconify, gtk_window_is_active, gtk_window_list_toplevels, gtk_window_maximize, gtk_window_mnemonic_activate, gtk_window_move, gtk_window_new, gtk_window_parse_geometry, gtk_window_present, gtk_window_remove_accel_group, gtk_window_remove_mnemonic, gtk_window_resize, gtk_window_set_accept_focus, gtk_window_set_auto_startup_notification, gtk_window_set_decorated, gtk_window_set_default_icon_from_file, gtk_window_set_default_icon_list, gtk_window_set_default_icon, gtk_window_set_default_size, gtk_window_set_default, gtk_window_set_destroy_with_parent, gtk_window_set_focus, gtk_window_set_frame_dimensions, gtk_window_set_geometry_hints, gtk_window_set_gravity, gtk_window_set_has_frame, gtk_window_set_icon_from_file, gtk_window_set_icon_list, gtk_window_set_icon, gtk_window_set_keep_above, gtk_window_set_keep_below, gtk_window_set_mnemonic_modifier, gtk_window_set_modal, gtk_window_set_position, gtk_window_set_resizable, gtk_window_set_role, gtk_window_set_screen, gtk_window_set_skip_pager_hint, gtk_window_set_skip_taskbar_hint, gtk_window_set_title, gtk_window_set_transient_for, gtk_window_set_type_hint, gtk_window_set_wmclass, gtk_window_stick, gtk_window_unfullscreen, gtk_window_unmaximize, gtk_window_unstick, hasToplevelFocus, iconify, isActive, isDestroyed, listToplevelWindows, maximize, move, present, removeAccelGroup, resize, setAcceptFocus, setAutoStartupNotification, setDecorated, setDefaultIcon, setDefaultIconFromFile, setDefaultIconList, setDefaultIconName, setDefaultSize, setDefaultWidget, setFocusOnMap, setFocusWidget, setGeometryHints, setGravity, setIcon, setIconFromFile, setIconList, setIconName, setKeepAbove, setKeepBelow, setModal, setPosition, setResizable, setScreen, setSkipPagerHint, setSkipTaskbarHint, setTitle, setTransientParent, stick, unfullscreen, unmaximize, unstick
 
Methods inherited from class org.gnu.gtk.Bin
getBin, getChild, gtk_bin_get_child, gtk_bin_get_type
 
Methods inherited from class org.gnu.gtk.Container
add, addListener, fireContainerEvent, getBooleanChildProperty, getBorderWidth, getChildProperty, getChildren, getContainer, getEventListenerClass, getEventType, getIntChildProperty, getResizeMode, gtk_container_add, gtk_container_check_resize, gtk_container_child_get_property, gtk_container_child_set_property, gtk_container_child_type, gtk_container_get_border_width, gtk_container_get_children, gtk_container_get_focus_chain, gtk_container_get_focus_hadjustment, gtk_container_get_focus_vadjustment, gtk_container_get_resize_mode, gtk_container_get_type, gtk_container_propagate_expose, gtk_container_remove, gtk_container_resize_children, gtk_container_set_border_width, gtk_container_set_focus_chain, gtk_container_set_focus_child, gtk_container_set_focus_hadjustment, gtk_container_set_focus_vadjustment, gtk_container_set_reallocate_redraws, gtk_container_set_resize_mode, gtk_container_unset_focus_chain, remove, removeListener, resizeChildren, setBooleanChildProperty, setBorderWidth, setChildProperty, setIntChildProperty, setResizeMode
 
Methods inherited from class org.gnu.gtk.Widget
activate, addAccelerator, addEvents, addListener, addListener, addListener, addListener, addListener, addListener, addListener, addListener, addListener, addListener, addListener, canActivateAccel, createContext, createLayout, draw, drawArea, drawArea, findListener, finish, fireBooleanLifeCycleEvent, fireConfigureEvent, fireDeleteDragDataEvent, fireDragMotionEvent, fireDropDragEvent, fireEndDragEvent, fireExposeEvent, fireFocusEvent, fireKeyEvent, fireLeaveDragDestinationEvent, fireLifeCycleEvent, fireMouseEvent, fireMouseMotionEvent, fireReceiveDragDataEvent, fireRequestDragDataEvent, fireStartDragEvent, getAccessible, getAllocation, getCanFocus, getColormap, getContext, getData, getDisplay, getDragData, getExtensionEvents, getModifierStyle, getName, getParent, getParentWindow, getPointer, getRootWindow, getSensitive, getStyle, getToplevel, getWidget, getWindow, grabDefault, grabFocus, gtk_drag_dest_set, gtk_drag_dest_unset, gtk_drag_finish, gtk_drag_get_data, gtk_drag_highlight, gtk_drag_source_set_icon_pixbuf, gtk_drag_source_set_icon_stock, gtk_drag_source_set_icon, gtk_drag_source_set, gtk_drag_source_unset, gtk_drag_unhighlight, gtk_widget_activate, gtk_widget_add_accelerator, gtk_widget_add_events, gtk_widget_add_mnemonic_label, gtk_widget_can_activate_accel, gtk_widget_child_focus, gtk_widget_child_notify, gtk_widget_class_path, gtk_widget_create_pango_context, gtk_widget_create_pango_layout, gtk_widget_destroy, gtk_widget_destroyed, gtk_widget_ensure_style, gtk_widget_event, gtk_widget_freeze_child_notify, gtk_widget_get_accessible, gtk_widget_get_allocation, gtk_widget_get_ancestor, gtk_widget_get_child_requisition, gtk_widget_get_child_visible, gtk_widget_get_colormap, gtk_widget_get_composite_name, gtk_widget_get_default_colormap, gtk_widget_get_default_direction, gtk_widget_get_default_style, gtk_widget_get_default_visual, gtk_widget_get_direction, gtk_widget_get_display, gtk_widget_get_events, gtk_widget_get_extension_events, gtk_widget_get_modifier_style, gtk_widget_get_name, gtk_widget_get_pango_context, gtk_widget_get_parent_window, gtk_widget_get_parent, gtk_widget_get_pointer, gtk_widget_get_root_window, gtk_widget_get_screen, gtk_widget_get_sensitive, gtk_widget_get_settings, gtk_widget_get_size_request, gtk_widget_get_style, gtk_widget_get_toplevel, gtk_widget_get_type, gtk_widget_get_visual, gtk_widget_get_window, gtk_widget_grab_default, gtk_widget_grab_focus, gtk_widget_has_screen, gtk_widget_hide_all, gtk_widget_hide_on_delete, gtk_widget_hide, gtk_widget_intersect, gtk_widget_is_ancestor, gtk_widget_is_focus, gtk_widget_list_accel_closures, gtk_widget_list_mnemonic_labels, gtk_widget_map, gtk_widget_mnemonic_activate, gtk_widget_modify_base, gtk_widget_modify_bg, gtk_widget_modify_fg, gtk_widget_modify_font, gtk_widget_modify_style, gtk_widget_modify_text, gtk_widget_path, gtk_widget_pop_colormap, gtk_widget_pop_composite_child, gtk_widget_push_colormap, gtk_widget_push_composite_child, gtk_widget_queue_draw_area, gtk_widget_queue_draw, gtk_widget_queue_resize, gtk_widget_realize, gtk_widget_region_intersect, gtk_widget_remove_accelerator, gtk_widget_remove_mnemonic_label, gtk_widget_render_icon, gtk_widget_reparent, gtk_widget_reset_rc_styles, gtk_widget_send_expose, gtk_widget_set_accel_path, gtk_widget_set_app_paintable, gtk_widget_set_child_visible, gtk_widget_set_colormap, gtk_widget_set_composite_name, gtk_widget_set_default_colormap, gtk_widget_set_default_direction, gtk_widget_set_direction, gtk_widget_set_double_buffered, gtk_widget_set_events, gtk_widget_set_extension_events, gtk_widget_set_name, gtk_widget_set_parent_window, gtk_widget_set_parent, gtk_widget_set_redraw_on_allocate, gtk_widget_set_scroll_adjustments, gtk_widget_set_sensitive, gtk_widget_set_size_request, gtk_widget_set_state, gtk_widget_set_style, gtk_widget_shape_combine_mask, gtk_widget_show_all, gtk_widget_show_now, gtk_widget_show, gtk_widget_size_allocate, gtk_widget_size_request, gtk_widget_style_get_property, gtk_widget_thaw_child_notify, gtk_widget_translate_coordinates, gtk_widget_unmap, gtk_widget_unparent, gtk_widget_unrealize, handleButtonPressed, handleButtonReleased, handleConfigure, handleDelete, handleDestroy, handleDragDataDeleted, handleDragDataReceived, handleDragDataRequested, handleDragDestinationLeft, handleDragDropped, handleDragEnded, handleDragMotionOccurred, handleDragStarted, handleExpose, handleFocusIn, handleFocusOut, handleHide, handleKeyPressed, handleKeyReleased, handleMap, handleMouseEnter, handleMouseLeave, handleMouseMotion, handleNoExpose, handleRealize, handleScroll, handleShow, handleUnmap, handleUnrealize, hasFocus, hasScreen, hide, hideAll, highlight, highlight, intersect, isAncestor, makeWidget, modifyStyle, popColormap, pushColormap, realize, removeAccelerator, removeListener, removeListener, removeListener, removeListener, removeListener, removeListener, removeListener, removeListener, removeListener, removeListener, removeListener, reparent, setBackgroundColor, setBaseColor, setCanFocus, setColormap, setDoubleBuffered, setDragDestination, setDragIcon, setDragIconPixbuf, setDragIconStock, setDragSource, setEvents, setExtensionEvents, setFont, setForegroundColor, setMinimumSize, setName, setNoDragDestination, setNoDragSource, setSensitive, setTextColor, shapeCombineMask, show, showAll, unHighlight, unHighlight
 
Methods inherited from class org.gnu.gtk.GtkObject
getFlags, gtk_object_destroy, gtk_object_get_type, gtk_object_sink, setFlags, sink
 
Methods inherited from class org.gnu.glib.GObject
addEventHandler, addEventHandler, addEventHandler, addEventHandler, addEventHandler, addEventHandler, addEventHandler, addListener, collect, freezeNotify, getBooleanProperty, getData, getData, getDoubleProperty, getFloatProperty, getGObjectFromHandle, getIntFromHandle, getIntProperty, getJavaObjectProperty, getLongProperty, getPixbufProperty, getProperty, getStringFromHandle, getStringProperty, hasProperty, instantiateJGObjectFromGType, notify, removeEventHandler, removeListener, retrieveGObject, setBooleanProperty, setData, setData, setDoubleProperty, setFloatProperty, setIntProperty, setJavaObjectProperty, setLongProperty, setPixbufProperty, setProperty, setStringProperty, thawNotify
 
Methods inherited from class org.gnu.glib.Struct
equals, getHandle, getNullHandle, hashCode, setHandle
 
Methods inherited from class java.lang.Object
clone, getClass, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

LOC

private final int LOC
See Also:
Constant Field Values

OBJ

private final int OBJ
See Also:
Constant Field Values

BYTE_BITS

private final int BYTE_BITS
See Also:
Constant Field Values

myTask

private Task myTask

glade

private org.gnu.glade.LibGlade glade

prefs

private Preferences prefs

gladePath

public static String gladePath

cols

private org.gnu.gtk.DataColumn[] cols

colNames

protected static String[] colNames

colVisible

protected boolean[] colVisible

columns

private org.gnu.gtk.TreeViewColumn[] columns

formatDialog

private MemoryFormatDialog formatDialog

memoryView

private org.gnu.gtk.TreeView memoryView

diss

private Disassembler diss

fromSpin

private org.gnu.gtk.SpinButton fromSpin

fromBox

private org.gnu.gtk.Entry fromBox

segmentCombo

private SimpleComboBox segmentCombo

segmentList

private ObservableLinkedList segmentList

model

private org.gnu.gtk.ListStore model

lastKnownFrom

private double lastKnownFrom

lastKnownTo

private double lastKnownTo

currentFormat

protected static int currentFormat

MW_active

private boolean MW_active

observable

private Observable observable

lock

private MemoryWindow.LockObserver lock

lastPath

private org.gnu.gtk.TreePath lastPath

toggle

private boolean toggle

closed

private boolean closed

mmaps

private MemoryMap[] mmaps

segmentIndex

private int segmentIndex

swin

private org.gnu.gtk.ScrolledWindow swin

refreshLock

private boolean refreshLock
Constructor Detail

MemoryWindow

public MemoryWindow(org.gnu.glade.LibGlade glade)
The MemoryWindow displays the information stored at various locations in memory, starting from the current program counter to a user-defined region. The information can be displayed from 4-bit to 64-bit values, and in binary, octal, decimal or hexadecimal format. The MemoryWindow is dynamically created through the MemoryWindowFactory.

Parameters:
glade - The glade file containing MemoryWindow widgets.
Method Detail

finishMemWin

public void finishMemWin(Proc proc)
Initializes the Glade file, the MemoryWindow itself, adds listeners and Assigns the Proc.

Parameters:
proc - The Proc to be examined by mw.

setObservable

public void setObservable(Observable o)

hasTaskSet

public boolean hasTaskSet()
Check to see if the task to be examined has already been set.

Returns:
False if myTask is null, True otherwise.

setIsRunning

public void setIsRunning(boolean running)
Set the sensitivity of this window and the formatting window.

Parameters:
running - True if the window is running, false otherwise.

setTask

public void setTask(Task myTask)
Set the task for this MemoryWindow to examine. Initializes the Disassembler we use to grab instructions from memory, as well as initialize values for critical members of this class. Also performs the first refresh and display of information.

Parameters:
myTask - The task to be examined.

addressAccessible

private boolean addressAccessible(long address)
return a boolean indicating whether or not this address is accessible.

Returns:
whether or not this address is accessible

resetTask

public void resetTask(Task task)

recalculate

public void recalculate()
Recalculate the memory information based on a new bitsize and/or radix, and then update the display.


resetPCAndList

private void resetPCAndList()

refreshList

private void refreshList()
Refresh and update the display of addresses and values from what is re-calculated and turned into BigIntegers.


rowAppend

public void rowAppend(long i,
                      org.gnu.gtk.TreeIter iter)
Helper function for calculating memory information and putting it into rows to be displayed. By default append rows to the end; occasionally prepend rows to the front.

Parameters:
i - The memory address from which information is read from and stored in the model as an Object.
iter - The row in the TreeView.

desensitize

private void desensitize()

resensitize

private void resensitize()

padBytes

private String padBytes(String s,
                        boolean littleEndian,
                        int diff)
Pad this byte string with zeroes so that it is of proper size.

Parameters:
s - The String to pad zeroes to.
littleEndian - The endianness of the binary string.
diff - Eight minus this many bits need to be added.

switchEndianness

private String switchEndianness(String toReverse,
                                boolean littleEndian)
Switch the endianness of a binary string

Parameters:
toReverse - The String to converted
littleEndian - The endianness of this binary string.

handleFromSpin

public void handleFromSpin(double val)
When the 'From' SpinBox is changed, update the displayed information accordingly.

Parameters:
val - The new value of the SpinBox.

handleToSpin

public void handleToSpin(double val)
When the 'To' SpinBox value is changed, update the displayed information accordingly.

Parameters:
val - The new value of the SpinBox.

handleSymbol

private void handleSymbol(String symbolName)
When the box is inputed a symbol, update the displayed information to the symbol.

Parameters:
symbolName -

save

public void save(Preferences prefs)
Saves the new preferences of this window.

Specified by:
save in interface Saveable
Parameters:
prefs - The preference node to be saved.

load

public void load(Preferences prefs)
Loads the saved preferences of this window.

Specified by:
load in interface Saveable
Parameters:
prefs - The preference node used to load preferences.

getMyTask

public Task getMyTask()
Returns the Task being examined by this Window.

Returns:
myTask The Task being examined.

getClosed

public boolean getClosed()

setClosed

public void setClosed(boolean closed)

getLockObserver

public MemoryWindow.LockObserver getLockObserver()
Returns this MemoryWindow's LockObserver.

Returns:
lock This MemoryWindow's LockObserver