U.S. patent application number 14/960393 was filed with the patent office on 2016-03-24 for sizing a pane of a window presented on a display.
The applicant listed for this patent is International Business Machines Corporation. Invention is credited to Kyle E. Hayes, Christopher Monahan, Thomas L. Roach, Domanic N.C. Smith-Jones, Joseph R. Winchester.
Application Number | 20160085387 14/960393 |
Document ID | / |
Family ID | 50189287 |
Filed Date | 2016-03-24 |
United States Patent
Application |
20160085387 |
Kind Code |
A1 |
Hayes; Kyle E. ; et
al. |
March 24, 2016 |
SIZING A PANE OF A WINDOW PRESENTED ON A DISPLAY
Abstract
Sizing a pane of a window presented on a display. The window is
presented to a user on the display. Within the window, the pane is
presented at a first pane size. A user input is detected from the
user resizing the window. Responsive to detecting the user input
resizing the window, a new size of the window resulting from the
user input resizing the window is detected. Data is accessed from a
machine-readable storage device corresponding to at least one
user-defined pane size previously defined by the user to whom the
window is presented, wherein the user-defined pane size corresponds
to a particular window size. Based on the accessed user-defined
pane size(s), a second pane size of the pane at which the pane is
to be presented in the newly sized window is determined. The pane
is presented in the newly sized window at the second pane size.
Inventors: |
Hayes; Kyle E.; (Berkshire,
GB) ; Monahan; Christopher; (Bristol, GB) ;
Roach; Thomas L.; (Austin, TX) ; Smith-Jones; Domanic
N.C.; (Berkshire, GB) ; Winchester; Joseph R.;
(Hursley, GB) |
|
Applicant: |
Name |
City |
State |
Country |
Type |
International Business Machines Corporation |
Armonk |
NY |
US |
|
|
Family ID: |
50189287 |
Appl. No.: |
14/960393 |
Filed: |
December 6, 2015 |
Related U.S. Patent Documents
|
|
|
|
|
|
Application
Number |
Filing Date |
Patent Number |
|
|
13599163 |
Aug 30, 2012 |
9223591 |
|
|
14960393 |
|
|
|
|
Current U.S.
Class: |
715/789 |
Current CPC
Class: |
G06F 3/04847 20130101;
G06F 9/451 20180201; G06F 3/04842 20130101; G06F 3/04845 20130101;
G06F 3/0484 20130101; G06F 3/0481 20130101 |
International
Class: |
G06F 3/0481 20060101
G06F003/0481; G06F 3/0484 20060101 G06F003/0484 |
Claims
1-20. (canceled)
21. A method of sizing a pane of a window presented on a display to
a user, comprising: presenting, within the window, the pane at a
first pane size; resizing, responsive to detecting a resizing user
input from a user, the window to a new size; accessing, based upon
the new size of the window and within a data store, data
corresponding to a user-defined pane size previously defined by the
user, the user-defined pane size corresponding to a particular
window size; determining, based upon the user-defined pane size and
the new size of the window, a second pane size of the pane; and
presenting, in the window with the new size, the pane with the
second pane size.
22. The method of claim 21, wherein the data including a plurality
of user-defined pane sizes and each of the plurality of
user-defined pane sizes corresponding to a respective window size,
and the second pane size is interpolated from the data including
the plurality of user-defined pane sizes.
23. The method of claim 21, wherein the data including a plurality
of user-defined pane sizes and each of the plurality of
user-defined pane sizes corresponding to a respective window size,
an equation that correlates pane size to window size is generated
based upon the plurality of user-defined pane sizes and the
respective window sizes, and the second pane size is determined
using the equation.
24. The method of claim 21, wherein the user-defined pane size
previously defined by the user, the particular window size to which
the user-defined pane size corresponds, and the determined second
pane size each are, respectively, linear dimensions.
25. The method of claim 21, wherein the user-defined pane size
previously defined by the user, the particular window size to which
the user-defined pane size corresponds, and the determined second
pane size each are, respectively, area values.
26. The method of claim 21, wherein upon a user input changing the
pane from the first pane size to a new size, the new size is stored
together with a current size of the window in the data store.
27. A computer hardware system configured to size a pane of a
window presented on a display to a user, comprising: a hardware
processor configured to initiate the following executable
operations: presenting, within the window, the pane at a first pane
size; resizing, responsive to detecting a resizing user input from
a user, the window to a new size; accessing, based upon the new
size of the window and within a data store, data corresponding to a
user-defined pane size previously defined by the user, the
user-defined pane size corresponding to a particular window size;
determining, based upon the user-defined pane size and the new size
of the window, a second pane size of the pane; and presenting, in
the window with the new size, the pane with the second pane
size.
28. The system of claim 27, wherein the data including a plurality
of user-defined pane sizes and each of the plurality of
user-defined pane sizes corresponding to a respective window size,
and the second pane size is interpolated from the data including
the plurality of user-defined pane sizes.
29. The system of claim 27, wherein the data including a plurality
of user-defined pane sizes and each of the plurality of
user-defined pane sizes corresponding to a respective window size,
an equation that correlates pane size to window size is generated
based upon the plurality of user-defined pane sizes and the
respective window sizes, and the second pane size is determined
using the equation.
30. The system of claim 27, wherein the user-defined pane size
previously defined by the user, the particular window size to which
the user-defined pane size corresponds, and the determined second
pane size each are, respectively, linear dimensions.
31. The system of claim 27, wherein the user-defined pane size
previously defined by the user, the particular window size to which
the user-defined pane size corresponds, and the determined second
pane size each are, respectively, area values.
32. The system of claim 27, wherein upon a user input changing the
pane from the first pane size to a new size, the new size is stored
together with a current size of the window in the data store.
33. A computer program product for sizing a pane of a window
presented on a display to a user, comprising: a computer-readable
storage medium having stored therein program code that, when
executed by a computer hardware system, configures the computer
hardware system to perform: presenting, within the window, the pane
at a first pane size; resizing, responsive to detecting a resizing
user input from a user, the window to a new size; accessing, based
upon the new size of the window and within a data store, data
corresponding to a user-defined pane size previously defined by the
user, the user-defined pane size corresponding to a particular
window size; determining, based upon the user-defined pane size and
the new size of the window, a second pane size of the pane; and
presenting, in the window with the new size, the pane with the
second pane size.
34. The computer program product of claim 33, wherein the data
including a plurality of user-defined pane sizes and each of the
plurality of user-defined pane sizes corresponding to a respective
window size, and the second pane size is interpolated from the data
including the plurality of user-defined pane sizes.
35. The computer program product of claim 33, wherein the data
including a plurality of user-defined pane sizes and each of the
plurality of user-defined pane sizes corresponding to a respective
window size, an equation that correlates pane size to window size
is generated based upon the plurality of user-defined pane sizes
and the respective window sizes, and the second pane size is
determined using the equation.
36. The computer program product of claim 33, wherein the
user-defined pane size previously defined by the user, the
particular window size to which the user-defined pane size
corresponds, and the determined second pane size each are,
respectively, linear dimensions.
37. The computer program product of claim 33, wherein the
user-defined pane size previously defined by the user, the
particular window size to which the user-defined pane size
corresponds, and the determined second pane size each are,
respectively, area values.
38. The computer program product of claim 33, wherein upon a user
input changing the pane from the first pane size to a new size, the
new size is stored together with a current size of the window in
the data store.
Description
BACKGROUND
[0001] Arrangements described herein relate to a graphical user
interface and, more particularly, to presentation of panes within a
window.
[0002] A graphical user interface (GUI) is a type of user interface
that allows users to interact with electronic devices using images
rather than text commands. GUIs can be used in computers, hand-held
devices (e.g., smart phones), portable media players, gaming
devices, office equipment, small appliances, etc. A GUI represents
the information and actions available to a user through graphical
icons and visual indicators such as secondary notation, as opposed
to text-based interfaces, typed command labels or text navigation.
The actions are usually performed through direct manipulation of
the graphical elements.
[0003] Typically, a GUI uses windows to facilitate user interaction
with the GUI. Windows are two dimensional objects arranged on a
presentation plane, commonly referred to as a "desktop." Windows
oftentimes include other graphical objects, such as a menu-bar,
toolbars, controls, icons and often a work area. In a main work
area of the window, a document, image, folder contents or other
main object is displayed. Around the main work area, for example
within boundary areas of the window, there may be other window
areas, sometimes smaller than the main work area, referred to as
"panes" or "panels," showing relevant information or options
related to information presented in the main work area. Generally
speaking, the main work area of a single document interface holds a
main object. Child windows in multiple document interfaces, and
tabs in web browsers, can make several similar documents or main
objects available within a single main application window.
BRIEF SUMMARY
[0004] One or more embodiments disclosed within this specification
relate to sizing a pane of a window presented on a display. An
embodiment can include presenting the window on the display to a
user and presenting, within the window, the pane at a first pane
size. A user input is detected from the user resizing the window.
Responsive to detecting the user input resizing the window, a new
size of the window resulting from the user input resizing the
window is detected. Data is accessed from a machine-readable
storage device corresponding to at least one user-defined pane size
previously defined by the user to whom the window is presented,
wherein the user-defined pane size corresponds to a particular
window size. Based on the accessed user-defined pane size(s), a
second pane size of the pane at which the pane is to be presented
in the newly sized window is determined. The pane is presented in
the newly sized window at the second pane size.
[0005] Another embodiment can include a system including a
processor configured to initiate executable operations. Such
operations can include presenting a window on a display to a user
and presenting, within the window, a pane at a first pane size. The
operations further can include detecting a user input from the user
resizing the window and, responsive to detecting the user input
resizing the window, detecting a new size of the window resulting
from the user input resizing the window, and accessing, from a
machine-readable storage device, data corresponding to at least one
user-defined pane size previously defined by the user to whom the
window is presented, wherein the user-defined pane size corresponds
to a particular window size, The operations further can include
determining, via a processor, based on the accessed at least one
user-defined pane size, a second pane size of the pane at which the
pane is to be presented in the newly sized window, and presenting
the pane in the newly sized window at the second pane size.
[0006] Another embodiment can include a computer program product
for sizing a pane of a window presented on a display. The computer
program product can include a computer-readable storage medium
having stored thereon program code that, when executed, configures
a processor to perform executable operations. Such operations may
include presenting a window on a display to a user and presenting,
within the window, a pane at a first pane size. A user input is
detected from the user resizing the window. Responsive to detecting
the user input resizing the window, a new size of the window
resulting from the user input resizing the window is detected. Data
is accessed from a machine-readable storage device corresponding to
at least one user-defined pane size previously defined by the user
to whom the window is presented, wherein the user-defined pane size
corresponds to a particular window size. Based on the accessed
user-defined pane size(s), a second pane size of the pane at which
the pane is to be presented in the newly sized window is
determined. The pane is presented in the newly sized window at the
second pane size.
BRIEF DESCRIPTION OF THE SEVERAL VIEWS OF THE DRAWINGS
[0007] FIG. 1 depicts a block diagram of a system for sizing a pane
of a window presented on a display in accordance with an embodiment
disclosed within this specification.
[0008] FIG. 2 depicts a view of a window presented on a display in
accordance with an embodiment disclosed within this
specification.
[0009] FIG. 3 depicts a block diagram of the system of FIG. 1 in
accordance with a further embodiment disclosed within this
specification.
[0010] FIG. 4 depicts a block diagram of a processing system
configured to size a pane of a window presented on a display in
accordance with an embodiment disclosed within this
specification.
[0011] FIG. 5 is a flow chart illustrating a method of acquiring
data for use in sizing a pane of a window presented on a display in
accordance with an embodiment disclosed within this
specification.
[0012] FIG. 6 is a flow chart illustrating a method of sizing a
pane of a window presented on a display in accordance with an
embodiment disclosed within this specification.
DETAILED DESCRIPTION
[0013] As will be appreciated by one skilled in the art, aspects of
the present invention may be embodied as a system, method or
computer program product. Accordingly, aspects of the present
invention may take the form of an entirely hardware embodiment, an
entirely software embodiment (including firmware, resident
software, micro-code, etc.) or an embodiment combining software and
hardware aspects that may all generally be referred to herein as a
"circuit," "module" or "system." Furthermore, aspects of the
present invention may take the form of a computer program product
embodied in one or more computer-readable medium(s) having
computer-readable program code embodied, e.g., stored, thereon.
[0014] Any combination of one or more computer-readable medium(s)
may be utilized. The computer-readable medium may be a
computer-readable signal medium or a computer-readable storage
medium. A computer-readable storage medium may be, for example, but
not limited to, an electronic, magnetic, optical, electromagnetic,
infrared, or semiconductor system, apparatus, or device, or any
suitable combination of the foregoing. More specific examples (a
non-exhaustive list) of the computer-readable storage medium would
include the following: an electrical connection having one or more
wires, a portable computer diskette, a hard disk drive (HDD), a
solid state drive (SSD), a random access memory (RAM), a read-only
memory (ROM), an erasable programmable read-only memory (EPROM or
Flash memory), an optical fiber, a portable compact disc read-only
memory (CD-ROM), a digital versatile disc (DVD), an optical storage
device, a magnetic storage device, or any suitable combination of
the foregoing. In the context of this document, a computer-readable
storage medium may be any tangible medium that can contain, or
store a program for use by or in connection with an instruction
execution system, apparatus, or device.
[0015] A computer-readable signal medium may include a propagated
data signal with computer-readable program code embodied therein,
for example, in baseband or as part of a carrier wave. Such a
propagated signal may take any of a variety of forms, including,
but not limited to, electro-magnetic, optical, or any suitable
combination thereof. A computer-readable signal medium may be any
computer-readable medium that is not a computer-readable storage
medium and that can communicate, propagate, or transport a program
for use by or in connection with an instruction execution system,
apparatus, or device.
[0016] Program code embodied on a computer-readable medium may be
transmitted using any appropriate medium, including but not limited
to wireless, wireline, optical fiber, cable, RF, etc., or any
suitable combination of the foregoing. Computer program code for
carrying out operations for aspects of the present invention may be
written in any combination of one or more programming languages,
including an object oriented programming language such as Java.TM.,
Smalltalk, C++ or the like and conventional procedural programming
languages, such as the "C" programming language or similar
programming languages. The program code may execute entirely on the
user's computer, partly on the user's computer, as a stand-alone
software package, partly on the user's computer and partly on a
remote computer, or entirely on the remote computer or server. In
the latter scenario, the remote computer may be connected to the
user's computer through any type of network, including a local area
network (LAN) or a wide area network (WAN), or the connection may
be made to an external computer (for example, through the Internet
using an Internet Service Provider).
[0017] Aspects of the present invention are described below with
reference to flowchart illustrations and/or block diagrams of
methods, apparatus (systems), and computer program products
according to embodiments of the invention. It will be understood
that each block of the flowchart illustrations and/or block
diagrams, and combinations of blocks in the flowchart illustrations
and/or block diagrams, can be implemented by computer program
instructions. These computer program instructions may be provided
to a processor of a general purpose computer, special purpose
computer, or other programmable data processing apparatus to
produce a machine, such that the instructions, which execute via
the processor of the computer, other programmable data processing
apparatus, or other devices create means for implementing the
functions/acts specified in the flowcharts and/or block diagram
block or blocks.
[0018] These computer program instructions may also be stored in a
computer-readable medium that can direct a computer, other
programmable data processing apparatus, or other devices to
function in a particular manner, such that the instructions stored
in the computer-readable medium produce an article of manufacture
including instructions which implement the function/act specified
in the flowcharts and/or block diagram block or blocks.
[0019] The computer program instructions may also be loaded onto a
computer, other programmable data processing apparatus, or other
devices to cause a series of operational steps to be performed on
the computer, other programmable apparatus or other devices to
produce a computer implemented process such that the instructions
which execute on the computer or other programmable apparatus
provide processes for implementing the functions/acts specified in
the flowcharts and/or block diagram block or blocks.
[0020] For purposes of simplicity and clarity of illustration,
elements shown in the figures have not necessarily been drawn to
scale. For example, the dimensions of some of the elements may be
exaggerated relative to other elements for clarity. Further, where
considered appropriate, reference numbers are repeated among the
figures to indicate corresponding, analogous, or like features.
[0021] For purposes of explanation, specific nomenclature is set
forth to provide a thorough understanding of the various inventive
concepts disclosed herein. However, the terminology used herein is
for the purpose of describing particular embodiments only and is
not intended to be limiting of the invention. As used herein, the
term "sash" means a moveable vertical or horizontal bar used to
adjust a size of a pane or panel within a window presented on a
display via a graphical user interface. As used herein, the term
"window manager" means system software that controls the placement
and appearance of windows within a windowing system in a graphical
user interface. As used herein, the term "windowing system" means
system software that supports the implementation of window
managers, and provides basic support for graphics hardware,
pointing devices (e.g., mice), and keyboards. As used herein, the
term "user" means a human being interfacing with a processing
system. As used herein, the term "area" means a quantity that
expresses the extent of a two-dimensional surface or shape in a
plane. As used herein, the term "real time" means a level of
processing responsiveness that a user or system senses as
sufficiently immediate for a particular process or determination to
be made, or that enables the processor to keep up with some
external process (e.g., a user input resizing a window).
[0022] In accordance with the arrangements described herein, a
graphical user interface (GUI) presents one or more windows on a
display to facilitate user interactions with one or more
applications. In illustration, a window for a particular
application may be presented on, or over, a desktop, as is known to
those skilled in the art. The application may provide a main work
area. Around or within the main work area, for example within
boundary areas of the window, the application may provide other
window areas, referred to as "panes" or "panels," showing relevant
information or options related to information presented in the main
work area. Hereinafter, and in the claims that follow, "panes" and
"panels" collectively will be referred to as "panes." Thus,
reference to a pane hereinafter, and the claims that follow, means
reference to a pane and/or reference to a panel.
[0023] Within a window, at least one boundary of a pane is defined
by a respective sash. The sash is configured to be user moveable,
enabling the user to move the sash to selectively adjust the size
of the pane (e.g., height, width and/or area). When the user moves
the sash from an original position to a new position, the
user-defined size of the pane resulting from the sash being moved,
and the size of the window when the sash is moved, is recorded.
Such data recordation can occur each time the user moves the sash
soon after opening or resizing the window, or within a particular
number of user related events after the window is opened or resized
by the user. Thus, an understanding of the user's panel size
preferences with respect to window size will be understood. Each
time the user enters an input to resize a particular window in
which the pane is presented, the GUI will resize the pane according
to the window size based on the understanding of the user's
preferences gleaned from the recorded data.
[0024] FIG. 1 depicts a block diagram of a system 100 for sizing a
pane of a window presented on a display in accordance with an
embodiment disclosed within this specification. The system 100 can
include a windowing system 105, a window manager 110, a pane sizing
service 115, a window/pane size data table 120, and one or more
applications 125. The window manager 110 can be configured to
control the placement and appearance of windows within the GUI and
facilitate the interactions between windows, applications, and the
windowing system 105. The windowing system 105 is configured to
handle hardware devices such as one or more pointing devices (e.g.,
a mouse, a touch pad, a trackball, or the like), a keyboard and
graphics hardware, as well as the positioning of a pointer
controlled by a pointing device. The windowing system 105 and the
window manager 110 can be components of a GUI. The GUI can be a
component of an operating system or as software that interacts with
the operating system.
[0025] In one arrangement, the pane sizing service 115 can be a
component of the GUI. The pane sizing service 115 can be exposed to
applications 125 via an application programming interface (API),
though this need not be the case. In another arrangement, the pane
sizing service 115 can be implemented as software distinct from the
GUI, though communicative linked to the GUI via the operating
system. In illustration, the pane sizing service 115 can be
executed by the operating system as a stand-alone alone
application, or as a component of an application 125 with which the
user interfaces in the window in which the user resizable pane is
presented. For web-based applications 125, the pane sizing service
115 can be exposed using a JavaScript.RTM. library, for example a
Dojo library.
[0026] The window/pane size data table 120 can be a data table
exposed to the pane sizing service 115 in any suitable manner. For
example, the window/pane size data table 120 can be a data table
defined within the GUI, a data table within the operating system, a
data table within a database, or a data table hosted elsewhere.
[0027] FIG. 2 depicts a view of a window 200 presented on a display
in accordance with an embodiment disclosed within this
specification. In illustration, the window 200 can be presented on
a desktop 205 presented on the display by the GUI. The window 200
can present to a user via which the user can interact with a
particular application 125 (FIG. 1). The window 200 can present a
main work area 210 and a pane 215. The pane 215 can be bounded, at
least on one side, by a sash 220. For example, the sash 220 can
represent a boundary between the pane 215 and the main work area
210. The sash 220 can be presented vertically within the window
200, for example if the pane 215 is presented to the left or right
of the main work area 210, or presented horizontally within the
window 200, for example if the pane 215 is presented above or below
the main work area 210.
[0028] The sash 220 can be configured to be user moveable. For
example, the user can select the sash 220, for example by placing a
curser over the sash 220 and depressing a left mouse button, and
drag the sash 220 to a desired position, for example by moving the
mouse left, right, up and/or down. As the sash 220 is moved, the
size of the pane 215 will change. Thus, the user can move the sash
from one position to another to resize the pane 215. In lieu of
using a mouse to move the sash 220, the user may use a touchpad, a
trackball, or any other suitable pointing device. In another
arrangement, the user can enter particular keystrokes via a
keyboard to move the sash 220.
[0029] Referring both to FIG. 1 and FIG. 2, in operation, the
windowing system 105 can detect the user input to move the sash 220
within the window 200, and can communicate data 130 to the window
manager 110 corresponding to the user input. For example, the data
130 can indicate the type of user input and a position of a pointer
as the pointer is moved. Such position can be indicated by a sash
movement indicator 225. Based on this data 130, the window manager
110, knowing the position of the window 200 on the user's desktop
205 and the position of the sash 220 within the window 200 before
the user input, can process the data 130 to move the sash 220 from
its original position to a new position, thereby resizing the pane
215. As the data 130 is received, the window manager 110 can update
window presentation data 135 communicated to the windowing system
105 to present the window 200 and the pane 215 on the display as
the pane 215 is being resized.
[0030] When the user input is complete (e.g., when the user
releases the left mouse button), the window manager can generate a
pane resize event 140, which can be detected by the pane sizing
service 115. In response to the pane resize event 140, the pane
sizing service 115 can determine the size of the window 200, the
size of the pane 215, and the application 125 with which the window
200 presently is associated. The pane sizing service 115 store such
window/pane size data 150 (including an identifier that identifies
the application 125) to the window/pane size data table 120. To
determine the size of the window, the size of the pane 215 and the
application 125, the pane sizing service 115 can retrieve such data
150 from the window manager 110, for example by querying the window
manager 110. In another arrangement, the window manager 110 can
communicate the window/pane size data 150 to the pane sizing
service 115 when the pane resize event 140 is generated.
[0031] The window/pane size data 150 can represent the respective
sizes of the window 200 and the pane 215 in any suitable manner.
For example, the size of the window 200 can be represented using
one or more linear dimensions, such as a width dimension A, a
height dimension B and/or a diagonal dimension C, or represented
using an area value corresponding to the area of the window 200.
The linear dimension(s) and/or area value can be specified as
numbers of pixels, as percentages with respect to the desktop
linear dimension(s) and/or area of the desktop 205, or as any other
suitable values.
[0032] The size of the pane 215 also can be represented using one
or more linear dimensions, such as a width dimension D, a height
dimension E and/or a diagonal dimension F, or represented using an
area value corresponding to the area of the pane 215. In one
arrangement, the linear dimension(s) and/or area value of the size
of the pane 215 can be specified as numbers of pixels. In another
arrangement, the linear dimension(s) and/or area value of the size
of the pane 215 can be specified as percentages with respect to the
window 200 linear dimension(s) and/or area of the window 200, or
with respect to the desktop linear dimension(s) and/or area of the
desktop 205. Still, the linear dimension(s) and/or area value can
be specified using any other suitable values, and the present
arrangements are not limited in this regard. In an arrangement in
which the sash 220 is oriented vertically, the width dimension D
can identify a location of the sash 220 in the window 200. In an
arrangement in which the sash 220 is oriented horizontally, the
corresponding height dimension can identify a location of the sash
220 in the window 200. Further, in an arrangement in which the pane
215 is bounded by a plurality of sashes 220, for example on two or
more sides, the size of the pane 215 can be represented by
respective dimensions that indicate the locations of the sashes
220, though this need not be the case.
[0033] Regardless of how the window/pane size data 150 represents
the respective sizes of the window 200 and the pane 215, the
window/pane size data 150 represent a correlation between the size
of the pane 215, as selected by the user, and the size of the
window 200 for the particular application 125. Moreover, additional
window/pane size data 150 can be stored to the window/pane size
data table 120 each time the user resizes the pane 215 after the
window 200 has been resized or opened. In this regard, the pane
sizing service 115 can be configured to detect pane resize events
140 for a particular period of time after the window is resized or
opened, within a particular number of user interactions with the
window 200 after the window is resized or opened, or prior to a
particular type of user interaction with the window 200 being
detected. For instance, the pane sizing service 115 can be
configured to detect pane resize events 140 prior to the user
inputting data, or a certain amount of data, into the main work
area 210. Thus, additional window/pane size data 150 can be
accumulated over time, and can be used by the pane sizing service
115 to automatically resize the pane 215 when the window 200 is
opened or resized.
[0034] FIG. 3 depicts a block diagram of the system 100 of FIG. 1
in accordance with a further embodiment disclosed within this
specification. The system 100 can include the windowing system 105,
the window manager 110, the pane sizing service 115, the
window/pane size data table 120 and the application(s) 125.
[0035] Referring both to FIG. 2 and FIG. 3. The window 200 can be
presented having a particular size, and the pane 215 can be
presented in the window, also having a particular size. A user may
choose to resize the window 200, for example to change the width of
the window, change the height of the window 200 or change the
diagonal size of the window. Such resizing is represented by
respective window resize indicators 230, 235, 240.
[0036] The windowing system 105 can detect the user input resizing
the window 200, and can communicate data 305 to the window manager
110 corresponding to the user input. For example, the data 305 can
indicate the type of user input and a position of a pointer as the
pointer is moved. Such position can be indicated by a respective
indicator 230, 235, 240. Based on this data 305, the window manager
110, knowing the position of the window 200 on the user's desktop
205 before the user input, can process the data 130 to resize the
window 200 from an original size to a new size. As the data 305 is
received, the window manager 110 can update window presentation
data 310 communicated to the windowing system 105 to present the
window 200 on the display as the window 200 is being resized.
[0037] When the user input is complete (e.g., when the user
releases the left mouse button), the window manager 110 can
generate a window resize event 315, which can be detected by the
pane sizing service 115. In response to the window resize event
315, the pane sizing service 115 can determine the new size of the
window 200, for example by retrieving such data from the window
manager 110. As noted, the pane sizing service 115 can query the
window manager 110 for the new window size data or the window
manager 110 can communicate the new window size data to the pane
sizing service 115 when the window resize event 315 is
generated.
[0038] Further, the pane sizing service 115 can access from the
window/pane size data table 120 previously stored data 320
pertaining to one or more user-defined pane sizes previously
defined by the user to whom the window is presented. Each
user-defined pane size can correspond to a respective particular
window size and a particular application 125. Based on this data,
and the new size of the window, the pane sizing service 115 can
determine a pane size for the pane 215 that is appropriate for the
new size of the window 200. The pane sizing service 115 can
communicate the pane size 325 to the window manager 110. In
response, the window manager 110 can update window presentation
data 310 communicated to the windowing system 105 to present the
pane 215 at the indicated pane size 325.
[0039] In one arrangement, rather than waiting for the user to
complete the window resize before the window manager 110 generates
a window resize event 315, the window manager can generate a series
of window resize events 315 as the window 200 is being resized. The
pane sizing service 115 can access the window resize events 315 in
real time, and generate a corresponding series of pane sizes 325,
which the window manager 110 can process to update the window
presentation data 310 in real time. Accordingly, as the user
resizes the window 200, the pane 215 can be automatically resized
in real time, which will appear to the user as a smooth resizing of
the pane 215 as the user resizes the window 200.
[0040] In one arrangement, to determine a pane size for the pane
215 that is appropriate for the new size of the window 200, the
pane sizing service 115 can access prior window/pane size data 320
corresponding to a plurality of user-defined pane sizes for the
particular application 125, each of the plurality of user-defined
pane sizes corresponding to a respective window size. Further, the
pane sizing service 115 can interpolate the new pane size for the
pane 215 from the plurality of user-defined pane sizes. For
example, the pane sizing service 115 can identify in the data 320
at least one of the respective window sizes that is smaller than
the newly sized window 200, and select at least a first of the
respective user-defined pane sizes corresponding to that smaller
window. The pane sizing service 115 also can identify in the data
320 at least one of the respective window sizes that is larger than
the newly sized window 200, and select at least a second of the
respective user-defined pane sizes corresponding to that larger
window. The pane sizing service 115 can interpolate the new pane
size from the data corresponding to at least the first and second
of the respective user-defined pane sizes.
[0041] In another arrangement, to determine a pane size for the
pane 215 that is appropriate for the new size of the window 200,
the pane sizing service 115 can access prior window/pane size data
320 corresponding to a plurality of user-defined pane sizes
associated with the application 125, each of the plurality of
user-defined pane sizes corresponding to a respective window size.
Based on the plurality of user-defined pane sizes and the
respective window sizes, the pane sizing service 115 can generate
an equation that correlates pane size to window size, and apply the
equation to determine the new pane size for the pane 215. The
equation can be generated, for example, using least squares
approach to fit the equation to the data 320, or any other suitable
approach to automatically generating an equation. In this regard,
although the equation may be linear, this is not always the case.
For example, the equation may be a quadratic equation, a cubic
equation, a quartic equation, or any other type of equation.
[0042] By way of example, there may be a minimum size of the pane
215 the user chooses regardless of how small the window 200 is, or
a maximum size of the pane 215 the user chooses regardless of how
large the window 200 is. Moreover, the user's selection of pane
sizes need not directly correlate to the size of the window 200.
For example, when the window 200 is 25% of the size of the desktop
205, the user may select the pane 215 to be 40% of the size of the
window 200. When the window 200 is 50% of the size of the desktop
205, the user may select the pane 215 to be 25% of the size of the
window 200. When the window 200 is 75% of the size of the desktop
205, the user may select the pane 215 to be 20% of the size of the
window 200. The equation that correlates pane size to window size
can be generated to according to such user preferences.
[0043] In some instances, the user's previous selections of pane
sizes may be somewhat erratic. For example, at one point when the
window size was 420 pixels, the user may have chosen a pane size of
25% of the window size, while at another point when the window size
was 421 pixels, the user may have chosen a pane size of 99% of the
window size, and so on. In this example, the window sizes are
approximately the same, but the pane size data is radically
different. To prevent radically different pane sizes from being
presented in the window at various times when the window is
approximately the same size, statistical smoothing can be performed
on the pane size data. For example, pane size data for an
approximate window size can be averaged, or pane size data
radically different than other pane size data for an approximate
window size can be ignored. For instance, pane size data outside of
a standard deviation value can be ignored.
[0044] FIG. 4 depicts a block diagram of a processing system 400
configured to size a pane of a window presented on a display in
accordance with an embodiment disclosed within this specification.
The processing system 400 can include at least one processor 405
coupled to memory elements 410 through a system bus 415 or other
suitable circuitry. As such, the processing system 400 can store
program code within the memory elements 410. The processor 405 can
execute the program code accessed from the memory elements 410 via
the system bus 415. It should be appreciated that the processing
system 400 can be implemented in the form of any system including a
processor and memory that is capable of performing the functions
and/or operations described within this specification. For example,
the processing system 400 can be implemented as a computer, a
workstation, a mobile computer, a laptop computer, tablet computer,
a smart phone, a personal digital assistant, a gaming device, an
appliance, and so on.
[0045] The memory elements 410 can include one or more physical
memory devices such as, for example, local memory 420 and one or
more bulk storage devices 425. Local memory 420 refers to RAM or
other non-persistent memory device(s) generally used during actual
execution of the program code. The bulk storage device(s) 425 can
be implemented as a hard disk drive (HDD), solid state drive (SSD),
or other persistent data storage device. The processing system 400
also can include one or more cache memories (not shown) that
provide temporary storage of at least some program code in order to
reduce the number of times program code must be retrieved from the
bulk storage device 425 during execution.
[0046] Input/output (I/O) devices such as a display 430, a pointing
device 435 and, optionally, a keyboard 440 can be coupled to the
processing system 400. The I/O devices can be coupled to the
processing system 400 either directly or through intervening I/O
controllers. For example, the display 430 can be coupled to the
processing system 400 via a graphics processing unit (GPU), which
may be a component of the processor 405 or a discrete device.
[0047] As pictured in FIG. 4, the memory elements 410 can store the
components of the system 100 of FIGS. 1 and 3, namely the windowing
system 105, the window manager 110, the pane sizing service 115,
the window/pane size data table 120, and the application(s) 125.
Being implemented in the form of executable program code, these
components of the system 100 can be executed by the processing
system 400 and, as such, can be considered part of the processing
system 400.
[0048] FIG. 5 is a flow chart illustrating a method 500 of
acquiring data for use in sizing a pane of a window presented on a
display in accordance with an embodiment disclosed within this
specification. At step 502, a user input changing a size of pane
within a window from an original size to a new size can be
detected. The original size is the size of the pane upon the window
being opened or resized. At step 504, responsive to detecting the
user input changing the size of the pane from the original size to
the new size, data corresponding to at least a respective size of
the window when the pane is resized and the new size of the pane
can be stored to a machine-readable storage device. The method 500
can be implemented each time the size of the pane is adjusted by
the user immediately, or soon, after the window is opened or
resized and/or when a limited number of interactions by the user
with the main work area have been detected since the window was
opened or resized.
[0049] FIG. 6 is a flow chart illustrating a method 600 of sizing a
pane of a window presented on a display in accordance with an
embodiment disclosed within this specification. At step 602, a
window can be presented on a display to a user. Within the window,
a pane can be presented at a first pane size.
[0050] At step 604, a user input from the user resizing the window
of the window can be detected. Responsive to detecting the user
input resizing the window, at step 606 a new size of the window
resulting from the user input resizing the window can be detected.
At step 608, data corresponding to at least one user-defined pane
size previously defined by the user to whom the window is presented
can be accessed from a machine-readable storage device. The
user-defined pane size corresponds to a particular window size. At
step 610, based on the accessed at least one user-defined pane
size, a second pane size of the pane at which the pane is to be
presented in the newly sized window can be determined, for example
via a processor executing suitable program code. At step 612, the
pane can be presented in the newly sized window at the second pane
size.
[0051] Like numbers have been used to refer to the same items
throughout this specification. The flowcharts and block diagrams in
the Figures illustrate the architecture, functionality, and
operation of possible implementations of systems, methods and
computer program products according to various embodiments of the
present invention. In this regard, each block in the flowcharts or
block diagrams may represent a module, segment, or portion of code,
which comprises one or more executable instructions for
implementing the specified logical function(s). It should also be
noted that, in some alternative implementations, the functions
noted in the block may occur out of the order noted in the figures.
For example, two blocks shown in succession may, in fact, be
executed substantially concurrently, or the blocks may sometimes be
executed in the reverse order, depending upon the functionality
involved. It will also be noted that each block of the block
diagrams and/or flowchart illustration, and combinations of blocks
in the block diagrams and/or flowchart illustrations, can be
implemented by special purpose hardware-based systems that perform
the specified functions or acts, or combinations of special purpose
hardware and computer instructions.
[0052] The terminology used herein is for the purpose of describing
particular embodiments only and is not intended to be limiting of
the invention. As used herein, the singular forms "a," "an," and
"the" are intended to include the plural forms as well, unless the
context clearly indicates otherwise. It will be further understood
that the terms "includes," "including," "comprises," and/or
"comprising," when used in this specification, specify the presence
of stated features, integers, steps, operations, elements, and/or
components, but do not preclude the presence or addition of one or
more other features, integers, steps, operations, elements,
components, and/or groups thereof.
[0053] Reference throughout this specification to "one embodiment,"
"an embodiment," or similar language means that a particular
feature, structure, or characteristic described in connection with
the embodiment is included in at least one embodiment disclosed
within this specification. Thus, appearances of the phrases "in one
embodiment," "in an embodiment," and similar language throughout
this specification may, but do not necessarily, all refer to the
same embodiment.
[0054] The term "plurality," as used herein, is defined as two or
more than two. The term "another," as used herein, is defined as at
least a second or more. The term "coupled," as used herein, is
defined as connected, whether directly without any intervening
elements or indirectly with one or more intervening elements,
unless otherwise indicated. Two elements also can be coupled
mechanically, electrically, or communicatively linked through a
communication channel, pathway, network, or system. The term
"and/or" as used herein refers to and encompasses any and all
possible combinations of one or more of the associated listed
items. It will also be understood that, although the terms first,
second, etc. may be used herein to describe various elements, these
elements should not be limited by these terms, as these terms are
only used to distinguish one element from another unless stated
otherwise or the context indicates otherwise.
[0055] The term "if" may be construed to mean "when" or "upon" or
"in response to determining" or "in response to detecting,"
depending on the context. Similarly, the phrase "if it is
determined" or "if [a stated condition or event] is detected" may
be construed to mean "upon determining" or "in response to
determining" or "upon detecting [the stated condition or event]" or
"in response to detecting [the stated condition or event],"
depending on the context.
[0056] The corresponding structures, materials, acts, and
equivalents of all means or step plus function elements in the
claims below are intended to include any structure, material, or
act for performing the function in combination with other claimed
elements as specifically claimed. The description of the
embodiments disclosed within this specification have been presented
for purposes of illustration and description, but are not intended
to be exhaustive or limited to the form disclosed. Many
modifications and variations will be apparent to those of ordinary
skill in the art without departing from the scope and spirit of the
embodiments of the invention. The embodiments were chosen and
described in order to best explain the principles of the invention
and the practical application, and to enable others of ordinary
skill in the art to understand the inventive arrangements for
various embodiments with various modifications as are suited to the
particular use contemplated.
* * * * *