Pollo extension
Al Byers <[email protected]> Thu, 27 Feb 2003 09:04:37 -0700
| Newsgroups | gmane.editors.pollo.devel |
|---|---|
| Message-ID | <[email protected]> |
Bruno,
I realize that I was not getting the list responses sent to me, so I
re-subscribed. In the meantime, I will try to get my thinking in order
and respond to your questions.
>
>> Any chance that we could pass Pollo as an arg to the PolloFrame
>> constructor instead?
>Yes, but why? What are you trying to achieve by changing that? (not that
>I'm opposed to it, I'd just like to know the rationale behind it)
Like I have to have a reason ? :0) I guess because PolloFrame or its
subclass needs to have an instance of Pollo or its subclass. I could put
code in the PolloFrame constructor to do a Pollo.getInstance() and even
if Pollo was extended, the right version should be in the instance ivar.
But I thought that passing the instance in was more straight forward.
The motivating problem is that PolloFrame now populates its "pollo" ivar
in the class initialization code. If you see a better way, please let me
know and I will implement it.
>> 2. Creating the menubar and toolbar in the constructor makes it a little
>> problematic in extending. I guess an init() method might be better?
> No problem with that. But how will you extend it? By subclassing?
No, I don't see anyway to extend it. I was suggesting the init() because it would allow me to not call it.
What I ended up doing was putting a noargs constructor in PolloFrame so that I didn't have to worry about
the menus being constructed until I wanted.
I have finished my refactoring of my code to require as few changes to
Pollo as I could manage.
I tried to send this to the list, but I had the wrong address for you,
so I don't know if it made it or not. I will embed it instead of
attaching it.
./org/outerj/pollo/Pollo.java:46: public Pollo() // -amb Need to
inherit? Was private.
./org/outerj/pollo/Pollo.java:305: public Action
getNewPolloFrameAction() // -amb Calling it from frame
./org/outerj/pollo/PolloFrame.java:49: protected Pollo pollo = null;
// was ->Pollo.getInstance(); This seems to be the most
disruptive change. Pollo being instantiated in
the class declaration does not give it
a change to be something else.
I felt it was better to pass the instance of
Pollo in,
but, perhaps, Pollo could be instantiated within
the constructor with a call
to Pollo.getInstance().
This is assuming that Pollo or a subclass has
already been instantiated and the Pollo.instance
var has been set.
./org/outerj/pollo/PolloFrame.java ? Added noargs constructor so that
it would not call create menus routine.
./org/outerj/pollo/PolloFrame.java:144:
viewMenu.add(Utilities.createMenuItemFromAction(Pollo.getInstance().getNewPolloFrameAction()));
// -amb
./org/outerj/pollo/action/NewPolloFrameAction.java:18: protected
Pollo pollo; // -amb If PolloFrame does not automatically have
a value of Pollo instantiated, then this
action must have one embedded
so that it can pass it to the PolloFrame
constructor.
./org/outerj/pollo/action/NewPolloFrameAction.java:20: public
NewPolloFrameAction(Pollo inst) // -amb Needs Pollo instance. See above.
./org/outerj/pollo/action/NewPolloFrameAction.java:22: pollo =
inst; // -amb
./org/outerj/pollo/config/ViewTypeConf.java:150: public ArrayList
getSchemas(){ // -amb Need to access schemas from outside.
./org/outerj/pollo/EditorPanelImpl.java:80: public EditorPanelImpl(){
// -amb Allows subclassing without calling createMenus, etc.
./org/outerj/pollo/xmleditor/XmlEditor.java:356: public void
rebuildView() // -amb This and some other methods that deal with the view
need to be callable from my XSL debugging
code. For instance, once the program
stops at a stylesheet node, I need to be
able to tell the XmlEditor to rebuild
that view as the highlighted one.
./org/outerj/pollo/xmleditor/XmlEditor.java:410: protected void
createViewsRecursive(Node parentNode, View parentView) // -amb See above.
./org/outerj/pollo/xmleditor/XmlEditorPanel.java:51: public
XmlEditorPanel(){ // -amb Necessary inorder to subclass
./org/outerj/pollo/xmleditor/attreditor/AttributesTableModel.java:97:
public TempAttrEditInfo getTempAttrEditInfo(int row) // -amb
Changed from protected so I can call it from
AttributesPanel.
I use this to determine schema node type (I think).
./org/outerj/pollo/xmleditor/attreditor/AttributesTableModel.java:290:
public class TempAttrEditInfo //-amb Was protected. I made it public.
./org/outerj/pollo/xmleditor/chardataeditor/CharDataPanel.java:94:
public JTextArea getCharTextArea(){ //-amb
Added to get access to charDataTextArea.
There are simply places where I need
to control what shows in the
attributes panel.
./org/outerj/pollo/xmleditor/model/XmlModel.java:751: public void
setCurrentMode(int md) // -amb Need to set mode from outside for XSL
debugging purpose
./org/outerj/pollo/xmleditor/model/XmlModel.java:756: public void
setDocument(Document doc){ // -amb Need to set document from outside for
XSL debugging purpose
./org/outerj/pollo/xmleditor/view/ChildrenBlockView.java:24:
protected ArrayList childViewList = new ArrayList(10); //-amb, was private,
but I need to define subclasses of
ElementBlockView so I can
put a "break" component on it.
./org/outerj/pollo/xmleditor/view/ChildrenBlockView.java:42:
public ArrayList getChildViewList(){ // -amb, too inconvenient not to
have this
./org/outerj/pollo/xmleditor/view/ElementBlockView.java:270:
protected int max(int val1, int val2, int val3) //-amb Was private,
but I created a subclass of
ElementBlockView.
Is there anything more I can do to help with making Pollo extensible?
-Al
--
Al Byers
Automation Groups Inc
777 S. State St.
Orem, UT 84058
801.400.5111
http://www.automationgroups.com
[email protected]
We're "Open for Business" (http://www.ofbiz.org)
- the leader in Java-based Web services development tools
-------------------------------------------------------
This sf.net email is sponsored by:ThinkGeek
Welcome to geek heaven.
http://thinkgeek.com/sf