Stores.Join

From: [at]} <Wojtek>
Date: Mon, 11 Mar 2002 12:39:15 -0500 (EST)

----boundary-LibPST-iamunique-751858359_-_-
Content-type: text/plain

Hi:
>
> This is my second version (try) of translation. Now I have the following
> problems:
>
> 1. IF the instruction "Store.Join" is active THEN I can't copy a button via
> cut and paste but I can save and load documents with buttons.
>
> 2. IF the instruction "Store.Join" is deleted THEN I can copy buttons via
> cut and paste but I can't save and load document with buttons.

I have had the same problem in my modules. This is related to Domains,
which are documented rather poorly. The OuS guys explained to me that
Domains are somehow necessary in order to properly store and load
documents. In a pinch, every BlackBox window is a separate document.
A given object can belong to at most one document. Once you have committed
the object to a given document, the object cannot be re-commited to
another one. The Stores.Join does exactly this, it joins the object
to the document's "domain". From that point on you can save the whole
document to disk, including all the objects that "belong to the domain"
of this document.

There is only one exception to the statement "every BlackBox window
is a separate document". You can open multiple views of the SAME
document by cloning a windows. Such cloned windows are indicated
by brackets <> around the window's name. These cloned windows are
multiple views of the same document.

BlackBox does not allow multiple views of the SAME object in DIFFERENT
documents. Every object can be viewed multiple times on screen, but
only in the cloned windows described above. You may be used to System-3
Gadgets where there were no such limitations. This is not the case with
Blackbox. Just remember: every object can only belong to (at most)
ONE document. Once committed by executing Stores.Join, the object
is committed forever. You cannot save a document to disk unless
all its objects have been joined to the domain of the document.
Morover, all the "children objects" that you may want to save
have to be joined as well. (Example: your object is visualizing
a state of another object, and you want to save both your object
and the object being visualized. The object being visualized has
to be joined as well.)

This looks like a serious limitation, because the restriction applies
not only to the object itself, but also to all the "children objects"
mentioned above. If you now recall the Model-View-Cotroller paradigm,
and you realise that the View object has to be joined before being saved
to disk, and you realise that the Model has to be joined as well,
it follows that not only the View but also the Model can be shown
in at most one document. This is a VERY serious modification of the MVC,
as we know it from the Oberon System.

I have stepped upon this problem once I designed my Gr framework
along the MVC lines. Namely, I wanted to acquire numerical data into
a mute GrHistogram (a model), and to visualize the data in many different
places using a GrView. This looks exactly like the textbook application
from Reiser and Wirth, does it not? But it did not work. I encountered
exactly the same problem as you did. I could not save my views to disk.
The error messages were criptic. (Something about Stores.Join. What the
hell is Stores.Join?) Many weeks later, after exchanging tons of e-mails
with OuS supprt guys, I finally realised how seriously they have modified
MVC without clearly explaining they did so.

I am not saying this is without a merit. I am only saying that the
Domains and Stores.Join are very confusing, given the fact that BlackBox
users quite likely have the Oberon System background. It would help
if OuS have prominently said what they did in reference to the MVC,
as known from the Oberon literature.

Is there a practical way out? There is a workaround, which I implemented
in Gr. Use deep copies instead of shallow ones. Shallow copies will give
you domain violations, deep copies will not. This means your design has
to be modified to take the Domains into account. The design cannot be
along the classic MVC lines, for the reasons just explained.

Please see the Gr modules for implementation details. I incuded many
comments about Stores.Join in the source code.

Hope it helps,

Wojtek



--------------------------------------------

To unsubscribe from this mailing list, send a message containing the word "unsubscribe" to:
   blackbox-request{([at]})nowhere.xy

To get a list of valid e-mail commands and instructions on their usage, send a message containing the word "help" to the above address.

Send any problem reports or questions related to this email list to the list owner at
   owner-blackbox{([at]})nowhere.xy

Current posting policy:

a) To post you should use the same address by which you are subscribed to the mailing list. That way, the list server will recognize you as subscriber and forward your posting immediately, without creating any overhead.

b) If, for some reason, you cannot post from the address, by which you are subscribed, your message will be moderated to avoid spam. Please understand that moderation will often cause some delay, in particular over weekends or holydays.


----boundary-LibPST-iamunique-751858359_-_-
Content-type: application/rtf
Content-transfer-encoding: base64
Content-Disposition: attachment; filename="rtf-body.rtf"

e1xydGYxXGFuc2lcYW5zaWNwZzEyNTJcZnJvbXRleHQgXGRlZmYwe1xmb250dGJsDQp7XGYwXGZz
d2lzcyBBcmlhbDt9DQp7XGYxXGZtb2Rlcm4gQ291cmllciBOZXc7fQ0Ke1xmMlxmbmlsXGZjaGFy
c2V0MiBTeW1ib2w7fQ0Ke1xmM1xmbW9kZXJuXGZjaGFyc2V0MCBDb3VyaWVyIE5ldzt9fQ0Ke1xj
b2xvcnRibFxyZWQwXGdyZWVuMFxibHVlMDtccmVkMFxncmVlbjBcYmx1ZTI1NTt9DQpcdWMxXHBh
cmRccGxhaW5cZGVmdGFiMzYwIFxmMFxmczIwIEhpOlxwYXINCj5ccGFyDQo+IFRoaXMgaXMgbXkg
c2Vjb25kIHZlcnNpb24gKHRyeSkgb2YgdHJhbnNsYXRpb24uIE5vdyBJIGhhdmUgdGhlIGZvbGxv
d2luZ1xwYXINCj4gcHJvYmxlbXM6XHBhcg0KPlxwYXINCj4gMS4gSUYgdGhlIGluc3RydWN0aW9u
ICJTdG9yZS5Kb2luIiBpcyBhY3RpdmUgVEhFTiBJIGNhbid0IGNvcHkgYSBidXR0b24gdmlhXHBh
cg0KPiBjdXQgYW5kIHBhc3RlIGJ1dCBJIGNhbiBzYXZlIGFuZCBsb2FkIGRvY3VtZW50cyB3aXRo
IGJ1dHRvbnMuXHBhcg0KPlxwYXINCj4gMi4gSUYgdGhlIGluc3RydWN0aW9uICJTdG9yZS5Kb2lu
IiBpcyBkZWxldGVkIFRIRU4gSSBjYW4gY29weSBidXR0b25zIHZpYVxwYXINCj4gY3V0IGFuZCBw
YXN0ZSBidXQgSSBjYW4ndCBzYXZlIGFuZCBsb2FkIGRvY3VtZW50IHdpdGggYnV0dG9ucy5ccGFy
DQpccGFyDQpJIGhhdmUgaGFkIHRoZSBzYW1lIHByb2JsZW0gaW4gbXkgbW9kdWxlcy4gVGhpcyBp
cyByZWxhdGVkIHRvIERvbWFpbnMsXHBhcg0Kd2hpY2ggYXJlIGRvY3VtZW50ZWQgcmF0aGVyIHBv
b3JseS4gVGhlIE91UyBndXlzIGV4cGxhaW5lZCB0byBtZSB0aGF0XHBhcg0KRG9tYWlucyBhcmUg
c29tZWhvdyBuZWNlc3NhcnkgaW4gb3JkZXIgdG8gcHJvcGVybHkgc3RvcmUgYW5kIGxvYWRccGFy
DQpkb2N1bWVudHMuIEluIGEgcGluY2gsIGV2ZXJ5IEJsYWNrQm94IHdpbmRvdyBpcyBhIHNlcGFy
YXRlIGRvY3VtZW50LlxwYXINCkEgZ2l2ZW4gb2JqZWN0IGNhbiBiZWxvbmcgdG8gYXQgbW9zdCBv
bmUgZG9jdW1lbnQuIE9uY2UgeW91IGhhdmUgY29tbWl0dGVkXHBhcg0KdGhlIG9iamVjdCB0byBh
IGdpdmVuIGRvY3VtZW50LCB0aGUgb2JqZWN0IGNhbm5vdCBiZSByZS1jb21taXRlZCB0b1xwYXIN
CmFub3RoZXIgb25lLiBUaGUgU3RvcmVzLkpvaW4gZG9lcyBleGFjdGx5IHRoaXMsIGl0IGpvaW5z
IHRoZSBvYmplY3RccGFyDQp0byB0aGUgZG9jdW1lbnQncyAiZG9tYWluIi4gRnJvbSB0aGF0IHBv
aW50IG9uIHlvdSBjYW4gc2F2ZSB0aGUgd2hvbGVccGFyDQpkb2N1bWVudCB0byBkaXNrLCBpbmNs
dWRpbmcgYWxsIHRoZSBvYmplY3RzIHRoYXQgImJlbG9uZyB0byB0aGUgZG9tYWluIlxwYXINCm9m
IHRoaXMgZG9jdW1lbnQuXHBhcg0KXHBhcg0KVGhlcmUgaXMgb25seSBvbmUgZXhjZXB0aW9uIHRv
IHRoZSBzdGF0ZW1lbnQgImV2ZXJ5IEJsYWNrQm94IHdpbmRvd1xwYXINCmlzIGEgc2VwYXJhdGUg
ZG9jdW1lbnQiLiBZb3UgY2FuIG9wZW4gbXVsdGlwbGUgdmlld3Mgb2YgdGhlIFNBTUVccGFyDQpk
b2N1bWVudCBieSBjbG9uaW5nIGEgd2luZG93cy4gU3VjaCBjbG9uZWQgd2luZG93cyBhcmUgaW5k
aWNhdGVkXHBhcg0KYnkgYnJhY2tldHMgPD4gYXJvdW5kIHRoZSB3aW5kb3cncyBuYW1lLiBUaGVz
ZSBjbG9uZWQgd2luZG93cyBhcmVccGFyDQptdWx0aXBsZSB2aWV3cyBvZiB0aGUgc2FtZSBkb2N1
bWVudC5ccGFyDQpccGFyDQpCbGFja0JveCBkb2VzIG5vdCBhbGxvdyBtdWx0aXBsZSB2aWV3cyBv
ZiB0aGUgU0FNRSBvYmplY3QgaW4gRElGRkVSRU5UXHBhcg0KZG9jdW1lbnRzLiBFdmVyeSBvYmpl
Y3QgY2FuIGJlIHZpZXdlZCBtdWx0aXBsZSB0aW1lcyBvbiBzY3JlZW4sIGJ1dFxwYXINCm9ubHkg
aW4gdGhlIGNsb25lZCB3aW5kb3dzIGRlc2NyaWJlZCBhYm92ZS4gWW91IG1heSBiZSB1c2VkIHRv
IFN5c3RlbS0zXHBhcg0KR2FkZ2V0cyB3aGVyZSB0aGVyZSB3ZXJlIG5vIHN1Y2ggbGltaXRhdGlv
bnMuIFRoaXMgaXMgbm90IHRoZSBjYXNlIHdpdGhccGFyDQpCbGFja2JveC4gSnVzdCByZW1lbWJl
cjogZXZlcnkgb2JqZWN0IGNhbiBvbmx5IGJlbG9uZyB0byAoYXQgbW9zdClccGFyDQpPTkUgZG9j
dW1lbnQuIE9uY2UgY29tbWl0dGVkIGJ5IGV4ZWN1dGluZyBTdG9yZXMuSm9pbiwgdGhlIG9iamVj
dFxwYXINCmlzIGNvbW1pdHRlZCBmb3JldmVyLiBZb3UgY2Fubm90IHNhdmUgYSBkb2N1bWVudCB0
byBkaXNrIHVubGVzc1xwYXINCmFsbCBpdHMgb2JqZWN0cyBoYXZlIGJlZW4gam9pbmVkIHRvIHRo
ZSBkb21haW4gb2YgdGhlIGRvY3VtZW50LlxwYXINCk1vcm92ZXIsIGFsbCB0aGUgImNoaWxkcmVu
IG9iamVjdHMiIHRoYXQgeW91IG1heSB3YW50IHRvIHNhdmVccGFyDQpoYXZlIHRvIGJlIGpvaW5l
ZCBhcyB3ZWxsLiAoRXhhbXBsZTogeW91ciBvYmplY3QgaXMgdmlzdWFsaXppbmdccGFyDQphIHN0
YXRlIG9mIGFub3RoZXIgb2JqZWN0LCBhbmQgeW91IHdhbnQgdG8gc2F2ZSBib3RoIHlvdXIgb2Jq
ZWN0XHBhcg0KYW5kIHRoZSBvYmplY3QgYmVpbmcgdmlzdWFsaXplZC4gVGhlIG9iamVjdCBiZWlu
ZyB2aXN1YWxpemVkIGhhc1xwYXINCnRvIGJlIGpvaW5lZCBhcyB3ZWxsLilccGFyDQpccGFyDQpU
aGlzIGxvb2tzIGxpa2UgYSBzZXJpb3VzIGxpbWl0YXRpb24sIGJlY2F1c2UgdGhlIHJlc3RyaWN0
aW9uIGFwcGxpZXNccGFyDQpub3Qgb25seSB0byB0aGUgb2JqZWN0IGl0c2VsZiwgYnV0IGFsc28g
dG8gYWxsIHRoZSAiY2hpbGRyZW4gb2JqZWN0cyJccGFyDQptZW50aW9uZWQgYWJvdmUuIElmIHlv
dSBub3cgcmVjYWxsIHRoZSBNb2RlbC1WaWV3LUNvdHJvbGxlciBwYXJhZGlnbSxccGFyDQphbmQg
eW91IHJlYWxpc2UgdGhhdCB0aGUgVmlldyBvYmplY3QgaGFzIHRvIGJlIGpvaW5lZCBiZWZvcmUg
YmVpbmcgc2F2ZWRccGFyDQp0byBkaXNrLCBhbmQgeW91IHJlYWxpc2UgdGhhdCB0aGUgTW9kZWwg
aGFzIHRvIGJlIGpvaW5lZCBhcyB3ZWxsLFxwYXINCml0IGZvbGxvd3MgdGhhdCBub3Qgb25seSB0
aGUgVmlldyBidXQgYWxzbyB0aGUgTW9kZWwgY2FuIGJlIHNob3duXHBhcg0KaW4gYXQgbW9zdCBv
bmUgZG9jdW1lbnQuIFRoaXMgaXMgYSBWRVJZIHNlcmlvdXMgbW9kaWZpY2F0aW9uIG9mIHRoZSBN
VkMsXHBhcg0KYXMgd2Uga25vdyBpdCBmcm9tIHRoZSBPYmVyb24gU3lzdGVtLlxwYXINClxwYXIN
CkkgaGF2ZSBzdGVwcGVkIHVwb24gdGhpcyBwcm9ibGVtIG9uY2UgSSBkZXNpZ25lZCBteSBHciBm
cmFtZXdvcmtccGFyDQphbG9uZyB0aGUgTVZDIGxpbmVzLiBOYW1lbHksIEkgd2FudGVkIHRvIGFj
cXVpcmUgbnVtZXJpY2FsIGRhdGEgaW50b1xwYXINCmEgbXV0ZSBHckhpc3RvZ3JhbSAoYSBtb2Rl
bCksIGFuZCB0byB2aXN1YWxpemUgdGhlIGRhdGEgaW4gbWFueSBkaWZmZXJlbnRccGFyDQpwbGFj
ZXMgdXNpbmcgYSBHclZpZXcuIFRoaXMgbG9va3MgZXhhY3RseSBsaWtlIHRoZSB0ZXh0Ym9vayBh
cHBsaWNhdGlvblxwYXINCmZyb20gUmVpc2VyIGFuZCBXaXJ0aCwgZG9lcyBpdCBub3Q/IEJ1dCBp
dCBkaWQgbm90IHdvcmsuIEkgZW5jb3VudGVyZWRccGFyDQpleGFjdGx5IHRoZSBzYW1lIHByb2Js
ZW0gYXMgeW91IGRpZC4gSSBjb3VsZCBub3Qgc2F2ZSBteSB2aWV3cyB0byBkaXNrLlxwYXINClRo
ZSBlcnJvciBtZXNzYWdlcyB3ZXJlIGNyaXB0aWMuIChTb21ldGhpbmcgYWJvdXQgU3RvcmVzLkpv
aW4uIFdoYXQgdGhlXHBhcg0KaGVsbCBpcyBTdG9yZXMuSm9pbj8pIE1hbnkgd2Vla3MgbGF0ZXIs
IGFmdGVyIGV4Y2hhbmdpbmcgdG9ucyBvZiBlLW1haWxzXHBhcg0Kd2l0aCBPdVMgc3VwcHJ0IGd1
eXMsIEkgZmluYWxseSByZWFsaXNlZCBob3cgc2VyaW91c2x5IHRoZXkgaGF2ZSBtb2RpZmllZFxw
YXINCk1WQyB3aXRob3V0IGNsZWFybHkgZXhwbGFpbmluZyB0aGV5IGRpZCBzby5ccGFyDQpccGFy
DQpJIGFtIG5vdCBzYXlpbmcgdGhpcyBpcyB3aXRob3V0IGEgbWVyaXQuIEkgYW0gb25seSBzYXlp
bmcgdGhhdCB0aGVccGFyDQpEb21haW5zIGFuZCBTdG9yZXMuSm9pbiBhcmUgdmVyeSBjb25mdXNp
bmcsIGdpdmVuIHRoZSBmYWN0IHRoYXQgQmxhY2tCb3hccGFyDQp1c2VycyBxdWl0ZSBsaWtlbHkg
aGF2ZSB0aGUgT2Jlcm9uIFN5c3RlbSBiYWNrZ3JvdW5kLiBJdCB3b3VsZCBoZWxwXHBhcg0KaWYg
T3VTIGhhdmUgcHJvbWluZW50bHkgc2FpZCB3aGF0IHRoZXkgZGlkIGluIHJlZmVyZW5jZSB0byB0
aGUgTVZDLFxwYXINCmFzIGtub3duIGZyb20gdGhlIE9iZXJvbiBsaXRlcmF0dXJlLlxwYXINClxw
YXINCklzIHRoZXJlIGEgcHJhY3RpY2FsIHdheSBvdXQ/IFRoZXJlIGlzIGEgd29ya2Fyb3VuZCwg
d2hpY2ggSSBpbXBsZW1lbnRlZFxwYXINCmluIEdyLiBVc2UgZGVlcCBjb3BpZXMgaW5zdGVhZCBv
ZiBzaGFsbG93IG9uZXMuIFNoYWxsb3cgY29waWVzIHdpbGwgZ2l2ZVxwYXINCnlvdSBkb21haW4g
dmlvbGF0aW9ucywgZGVlcCBjb3BpZXMgd2lsbCBub3QuIFRoaXMgbWVhbnMgeW91ciBkZXNpZ24g
aGFzXHBhcg0KdG8gYmUgbW9kaWZpZWQgdG8gdGFrZSB0aGUgRG9tYWlucyBpbnRvIGFjY291bnQu
IFRoZSBkZXNpZ24gY2Fubm90IGJlXHBhcg0KYWxvbmcgdGhlIGNsYXNzaWMgTVZDIGxpbmVzLCBm
b3IgdGhlIHJlYXNvbnMganVzdCBleHBsYWluZWQuXHBhcg0KXHBhcg0KUGxlYXNlIHNlZSB0aGUg
R3IgbW9kdWxlcyBmb3IgaW1wbGVtZW50YXRpb24gZGV0YWlscy4gSSBpbmN1ZGVkIG1hbnlccGFy
DQpjb21tZW50cyBhYm91dCBTdG9yZXMuSm9pbiBpbiB0aGUgc291cmNlIGNvZGUuXHBhcg0KXHBh
cg0KSG9wZSBpdCBoZWxwcyxccGFyDQpccGFyDQpXb2p0ZWtccGFyDQpccGFyDQpccGFyDQpccGFy
DQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxwYXINClxwYXIN
ClRvIHVuc3Vic2NyaWJlIGZyb20gdGhpcyBtYWlsaW5nIGxpc3QsIHNlbmQgYSBtZXNzYWdlIGNv
bnRhaW5pbmcgdGhlIHdvcmQgInVuc3Vic2NyaWJlIiB0bzpccGFyDQogICBibGFja2JveC1yZXF1
ZXN0QG9iZXJvbi5jaFxwYXINClxwYXINClRvIGdldCBhIGxpc3Qgb2YgdmFsaWQgZS1tYWlsIGNv
bW1hbmRzIGFuZCBpbnN0cnVjdGlvbnMgb24gdGhlaXIgdXNhZ2UsIHNlbmQgYSBtZXNzYWdlIGNv
bnRhaW5pbmcgdGhlIHdvcmQgImhlbHAiIHRvIHRoZSBhYm92ZSBhZGRyZXNzLlxwYXINClxwYXIN
ClNlbmQgYW55IHByb2JsZW0gcmVwb3J0cyBvciBxdWVzdGlvbnMgcmVsYXRlZCB0byB0aGlzIGVt
YWlsIGxpc3QgdG8gdGhlIGxpc3Qgb3duZXIgYXRccGFyDQogICBvd25lci1ibGFja2JveEBvYmVy
b24uY2hccGFyDQpccGFyDQpDdXJyZW50IHBvc3RpbmcgcG9saWN5OlxwYXINClxwYXINCmEpIFRv
IHBvc3QgeW91IHNob3VsZCB1c2UgdGhlIHNhbWUgYWRkcmVzcyBieSB3aGljaCB5b3UgYXJlIHN1
YnNjcmliZWQgdG8gdGhlIG1haWxpbmcgbGlzdC4gVGhhdCB3YXksIHRoZSBsaXN0IHNlcnZlciB3
aWxsIHJlY29nbml6ZSB5b3UgYXMgc3Vic2NyaWJlciBhbmQgZm9yd2FyZCB5b3VyIHBvc3Rpbmcg
aW1tZWRpYXRlbHksIHdpdGhvdXQgY3JlYXRpbmcgYW55IG92ZXJoZWFkLlxwYXINClxwYXINCmIp
IElmLCBmb3Igc29tZSByZWFzb24sIHlvdSBjYW5ub3QgcG9zdCBmcm9tIHRoZSBhZGRyZXNzLCBi
eSB3aGljaCB5b3UgYXJlIHN1YnNjcmliZWQsIHlvdXIgbWVzc2FnZSB3aWxsIGJlIG1vZGVyYXRl
ZCB0byBhdm9pZCBzcGFtLiBQbGVhc2UgdW5kZXJzdGFuZCB0aGF0IG1vZGVyYXRpb24gd2lsbCBv
ZnRlbiBjYXVzZSBzb21lIGRlbGF5LCBpbiBwYXJ0aWN1bGFyIG92ZXIgd2Vla2VuZHMgb3IgaG9s
eWRheXN9fQA6Mzk6MTUgLTA1MA==


----boundary-LibPST-iamunique-751858359_-_---
Received on Mon Mar 11 2002 - 18:39:15 UTC

This archive was generated by hypermail 2.3.0 : Thu Sep 26 2013 - 06:29:47 UTC