45 |
int padding = 15; |
int padding = 15; |
46 |
|
|
47 |
public void render(VobScene sc, int into, Fallback fallback, Fallback.Win win) { |
public void render(VobScene sc, int into, Fallback fallback, Fallback.Win win) { |
48 |
|
if(!(fallback.binder instanceof DefaultBinder)) return; |
49 |
|
DefaultBinder binder = (DefaultBinder)fallback.binder; |
50 |
|
|
51 |
Fallback.Win other; |
Fallback.Win other; |
52 |
if(win == fallback.windows[fallback.LEFT]) |
if(win == fallback.windows[fallback.LEFT]) |
53 |
other = fallback.windows[fallback.RIGHT]; |
other = fallback.windows[fallback.RIGHT]; |
54 |
else if(win == fallback.windows[fallback.RIGHT]) |
else if(win == fallback.windows[fallback.RIGHT]) |
55 |
other = fallback.windows[fallback.LEFT]; |
other = fallback.windows[fallback.LEFT]; |
56 |
else if(fallback.binder.directOp == DefaultBinder.REASSIGN_ARROWSET) |
else if(binder.directOp == DefaultBinder.REASSIGN_ARROWSET) |
57 |
other = null; // REASSIGN_ARROWSET is shown in all windows |
other = null; // REASSIGN_ARROWSET is shown in all windows |
58 |
else |
else |
59 |
return; // command doesn't apply to this window... |
return; // command doesn't apply to this window... |
64 |
HChain ch = new LinebreakableChain(); |
HChain ch = new LinebreakableChain(); |
65 |
cvf.setCenter(win.cursor); |
cvf.setCenter(win.cursor); |
66 |
|
|
67 |
if(dbg) pa("fallback.binder.directOp: "+fallback.binder.directOp); |
if(dbg) pa("fallback.binder.directOp: "+binder.directOp); |
68 |
|
|
69 |
if(fallback.binder.lastClientException != null) { |
if(binder.lastClientException != null) { |
70 |
fallback.binder.lastClientException.renderApology(ch, style); |
binder.lastClientException.renderApology(ch, style); |
71 |
} else if(fallback.mode == fallback.NORMAL) { |
} else if(fallback.mode == fallback.NORMAL) { |
72 |
switch(fallback.binder.directOp) { |
switch(binder.directOp) { |
73 |
case DefaultBinder.NONE: return; |
case DefaultBinder.NONE: return; |
74 |
case DefaultBinder.CONNECT: |
case DefaultBinder.CONNECT: |
75 |
ch.addBox(text("Connect [where?] to ")); |
ch.addBox(text("Connect [where?] to ")); |
76 |
if(fallback.binder.marks.isEmpty()) |
if(binder.marks.isEmpty()) |
77 |
ch.addBox(cell(other.cursor, win)); |
ch.addBox(cell(other.cursor, win)); |
78 |
else if(fallback.binder.marks.size() == 1) { |
else if(binder.marks.size() == 1) { |
79 |
ch.addBox(text("the marked cell (")); |
ch.addBox(text("the marked cell (")); |
80 |
Mark m = (Mark)fallback.binder.marks.get(0); |
Mark m = (Mark)binder.marks.get(0); |
81 |
ch.addBox(cell(m.cell, win)); |
ch.addBox(cell(m.cell, win)); |
82 |
ch.addBox(text(")")); |
ch.addBox(text(")")); |
83 |
} else |
} else |
104 |
break; |
break; |
105 |
default: |
default: |
106 |
throw new IllegalArgumentException("DirOp not known: " + |
throw new IllegalArgumentException("DirOp not known: " + |
107 |
fallback.binder.directOp); |
binder.directOp); |
108 |
} |
} |
109 |
} else if(fallback.mode == fallback.TEXT_1) |
} else if(fallback.mode == fallback.TEXT_1) |
110 |
ch.addBox(text("Text edit mode (press Tab to finish editing).")); |
ch.addBox(text("Text edit mode (press Tab to finish editing).")); |
111 |
else if(fallback.mode == fallback.SEARCH) |
else if(fallback.mode == fallback.SEARCH) |
112 |
ch.addBox(text("Search for: " + fallback.binder.buffer)); |
ch.addBox(text("Search for: " + binder.buffer)); |
113 |
else return; |
else return; |
114 |
|
|
115 |
// XXX linebreaking! (only breaks *between* boxes...) |
// XXX linebreaking! (only breaks *between* boxes...) |