Re: [vassalengine-devel] efficient drawing; bounding boxes and selection borders
Brought to you by:
rodneykinney,
uckelman
From: Joel U. <uck...@no...> - 2007-04-29 22:30:30
|
Thus spake "Rodney Kinney": > > > My reasons for wanting to collapse SelectionHighlighter into ColoredBorder > > are: > > > I'm with you here. I was only trying to hold on to the Highlighter > interface, but I agree that it makes sense to merge ColoredBorder and > SelectionHighlighter into a single concrete class. To maintain the > decorator pattern that ColoredBorder implements, which I like, we could move > the add/removeHighlighter methods into the Highlighter interface. Do you think it would be possible to promote ColoredBorder to a real Decorator? That would conceptually be the easiest, though I don't know whether it's possible to replace a GamePiece with a Decorator (that holds it as an inner piece) on selection and then do the opposite (discard a Decorator and replace it with its immediate child) on the fly. Is that doable? I hacked something together to try this just now and found that the way I did it caused some really *odd* problems. Here's what I did in KeyBuffer.add(): public void add(GamePiece p) { if (p != null && !pieces.contains(p)) { if (!(p instanceof Highlight)) { Map m = p.getMap(); if (m != null) { m.removePiece(p); GamePiece h = new Highlight(null, p); pieces.add(h); h.setProperty(Properties.SELECTED, Boolean.TRUE); m.addPiece(h); m.repaint(h); } } } } -- J. |