Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.java.gui > #910

Re: Updating Multiple Vie

From "Jason Cavett" <jason.cavett@THRWHITE.remove-dii-this>
Subject Re: Updating Multiple Vie
Message-ID <1171293949.115704.91310@v45g2000cwv.googlegroups.com> (permalink)
Newsgroups comp.lang.java.gui
References <1171063403.940179.195960@v45g2000cwv.googlegroups.com>
Date 2011-04-27 15:30 +0000
Organization TDS.net

Show all headers | View raw


  To: comp.lang.java.gui
On Feb 9, 6:23 pm, "Daniel Pitts" <googlegrou...@coloraura.com> wrote:
> On Feb 9, 12:41 pm, "Jason Cavett" <jason.cav...@gmail.com> wrote:
>
>
>
>
>
> > Here's my problem...
>
> > I have one Model.
> > I can have multiple views to that model (depending on how the user
> > wants to see the information).
>
> > Problem: The user can have multiple views to the same model open at
> > the same time.  If the user changes data in one view (which will
> > update the model), I want it to reflect in the other view(s).  I
> > originally tried this by notifying all observers of the model (which
> > includes the original view that was just edited) and repopulating the
> > fields of the views.  But, when I fire off the notification, I get
> > this exception:
>
> > Exception in thread "AWT-EventQueue-0 java.lang.IllegalStateException:
> > Attempt to mutate in notification
>
> > ...whenever I edit a TextField or anything else with a
> > DocumentListener.
>
> > I sorta understand why this is happening (writeLock() and not being
> > able to modify while I'm notifying) but I am very confused on how to
> > fix it.  Can anybody give any suggestions?
>
> First, this is more on-topic at comp.lang.java.gui.
> Second, your views shouldn't modify any part of the model based while
> responding to a change in the model.
>
> If you should implement a single model that represents all
> interconnected aspects of your business domain, and have all of your
> components able to read values from the model.
>
> Having a model observer modify the model runs the risk of infinit
> recursion or infinit loops.- Hide quoted text -
>
> - Show quoted text -

> First, this is more on-topic at comp.lang.java.gui.

Okay

> [...]

I think there's some confusion (although, I have figured out a
solution to my problem).

I have a model - and, yes, there's only one.  It extends Observable.
I have views - they implement Observer.  The user can have multiple
views open to the same model.  When the user makes a change to the
view, this triggers the controller which updates the model.  The
model, once updated, fires off a notify to its Observers (all the
views) and the views are then updated.  I used a flag so that a view
cannot be updated more than once in an "edit" (which prevents any
possibility of infinite loops).

I know MVC can be implemented in a few different ways (and nobody
seems to agree on one).  If the way I'm doing it is flat out wrong, it
would be useful to know.  (Or if there is a change I should be making,
I'd appreciate knowing that as well.)

Thanks for your help.

---
 * Synchronet * The Whitehouse BBS --- whitehouse.hulds.com --- check it out free usenet!
--- Synchronet 3.15a-Win32 NewsLink 1.92
Time Warp of the Future BBS - telnet://time.synchro.net:24

Back to comp.lang.java.gui | Previous | NextPrevious in thread | Next in thread | Find similar


Thread

Re: Updating Multiple Vie "Daniel Pitts" <daniel.pitts@THRWHITE.remove-dii-this> - 2011-04-27 15:30 +0000
  Re: Updating Multiple Vie "Jason Cavett" <jason.cavett@THRWHITE.remove-dii-this> - 2011-04-27 15:30 +0000
    Re: Updating Multiple Vie "Daniel Pitts" <daniel.pitts@THRWHITE.remove-dii-this> - 2011-04-27 15:30 +0000

csiph-web