Skip to content

Commit 89306b4

Browse files
committed
Move composer interface to view interface
1 parent 8eab3d5 commit 89306b4

22 files changed

Lines changed: 127 additions & 194 deletions

weaverbird-gui/src/main/java/com/techsenger/weaverbird/gui/console/CompletionPopupFxView.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@
3838
*
3939
* @author Pavel Castornii
4040
*/
41-
public class CompletionPopupFxView<P extends CompletionPopupPresenter<?, ?>>
41+
public class CompletionPopupFxView<P extends CompletionPopupPresenter<?>>
4242
extends AbstractPopupFxView<P> implements CompletionPopupView {
4343

4444
private final ListView<CompletionItem<?>> listView = new ListView<>();

weaverbird-gui/src/main/java/com/techsenger/weaverbird/gui/console/CompletionPopupPresenter.java

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,6 @@
2323
import com.techsenger.tabshell.core.CloseCheckResult;
2424
import com.techsenger.tabshell.core.ClosePreparationResult;
2525
import com.techsenger.tabshell.core.popup.AbstractPopupPresenter;
26-
import com.techsenger.tabshell.core.popup.PopupComposer;
2726
import java.util.Collection;
2827
import java.util.Comparator;
2928
import java.util.List;
@@ -34,8 +33,8 @@
3433
*
3534
* @author Pavel Castornii
3635
*/
37-
public class CompletionPopupPresenter<V extends CompletionPopupView, C extends PopupComposer>
38-
extends AbstractPopupPresenter<V, C> implements CompletionPopupPort {
36+
public class CompletionPopupPresenter<V extends CompletionPopupView> extends AbstractPopupPresenter<V>
37+
implements CompletionPopupPort {
3938

4039
private final Collection<CommandInfo> commands;
4140

weaverbird-gui/src/main/java/com/techsenger/weaverbird/gui/console/ConsoleTabComposer.java

Lines changed: 0 additions & 46 deletions
This file was deleted.

weaverbird-gui/src/main/java/com/techsenger/weaverbird/gui/console/ConsoleTabFxView.java

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -16,19 +16,19 @@
1616

1717
package com.techsenger.weaverbird.gui.console;
1818

19-
import com.techsenger.weaverbird.core.api.message.Message;
20-
import com.techsenger.weaverbird.core.api.message.MessageType;
21-
import com.techsenger.weaverbird.executor.api.command.CommandInfo;
22-
import com.techsenger.weaverbird.executor.api.command.ParameterDescriptor;
23-
import com.techsenger.weaverbird.net.client.api.ClientService;
24-
import com.techsenger.weaverbird.net.client.api.ClientSession;
2519
import com.techsenger.tabshell.core.ShellFxView;
2620
import com.techsenger.tabshell.core.tab.AbstractTabFxView;
2721
import com.techsenger.tabshell.material.Anchors;
2822
import com.techsenger.tabshell.material.style.StyleClasses;
2923
import com.techsenger.tabshell.material.style.StyleUtils;
3024
import com.techsenger.tabshell.material.theme.AtlantaFxTheme;
3125
import com.techsenger.toolkit.fx.utils.NodeUtils;
26+
import com.techsenger.weaverbird.core.api.message.Message;
27+
import com.techsenger.weaverbird.core.api.message.MessageType;
28+
import com.techsenger.weaverbird.executor.api.command.CommandInfo;
29+
import com.techsenger.weaverbird.executor.api.command.ParameterDescriptor;
30+
import com.techsenger.weaverbird.net.client.api.ClientService;
31+
import com.techsenger.weaverbird.net.client.api.ClientSession;
3232
import java.awt.Toolkit;
3333
import java.util.ArrayList;
3434
import java.util.Collection;
@@ -53,7 +53,7 @@
5353
*
5454
* @author Pavel Castornii
5555
*/
56-
public class ConsoleTabFxView<P extends ConsoleTabPresenter<?, ?>> extends AbstractTabFxView<P>
56+
public class ConsoleTabFxView<P extends ConsoleTabPresenter<?>> extends AbstractTabFxView<P>
5757
implements ConsoleTabView {
5858

5959
private static final class CssRichTextArea extends RichTextArea {
@@ -76,7 +76,7 @@ public StyleHandlerRegistry getStyleHandlerRegistry() {
7676
}
7777
};
7878

79-
protected class Composer extends AbstractTabFxView<P>.Composer implements ConsoleTabComposer {
79+
protected class Composer extends AbstractTabFxView<P>.Composer implements ConsoleTabView.Composer {
8080

8181
private final ConsoleTabFxView<P> view = ConsoleTabFxView.this;
8282

weaverbird-gui/src/main/java/com/techsenger/weaverbird/gui/console/ConsoleTabPresenter.java

Lines changed: 24 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,12 @@
1616

1717
package com.techsenger.weaverbird.gui.console;
1818

19+
import com.techsenger.patternfx.mvp.Descriptor;
20+
import com.techsenger.tabshell.core.CloseCheckResult;
21+
import com.techsenger.tabshell.core.ClosePreparationResult;
22+
import com.techsenger.tabshell.core.UiExecutor;
23+
import com.techsenger.tabshell.core.settings.SettingsSubscription;
24+
import com.techsenger.tabshell.core.tab.AbstractTabPresenter;
1925
import com.techsenger.weaverbird.core.api.Constants;
2026
import com.techsenger.weaverbird.core.api.Framework;
2127
import com.techsenger.weaverbird.core.api.message.DefaultMessage;
@@ -25,30 +31,24 @@
2531
import com.techsenger.weaverbird.executor.api.CommandExecutorFactory;
2632
import com.techsenger.weaverbird.executor.api.CommandSyntax;
2733
import com.techsenger.weaverbird.executor.api.command.Commands;
34+
import com.techsenger.weaverbird.gui.WeaverbirdComponents;
2835
import com.techsenger.weaverbird.gui.style.ConsoleIcons;
2936
import com.techsenger.weaverbird.net.client.api.ClientService;
3037
import com.techsenger.weaverbird.net.client.api.ClientSession;
31-
import com.techsenger.patternfx.mvp.Descriptor;
32-
import com.techsenger.tabshell.core.CloseCheckResult;
33-
import com.techsenger.tabshell.core.ClosePreparationResult;
34-
import com.techsenger.tabshell.core.UiExecutor;
35-
import com.techsenger.tabshell.core.settings.SettingsSubscription;
36-
import com.techsenger.tabshell.core.tab.AbstractTabPresenter;
3738
import java.util.ArrayList;
3839
import java.util.List;
3940
import java.util.Objects;
4041
import java.util.function.Consumer;
4142
import java.util.regex.Pattern;
4243
import org.slf4j.Logger;
4344
import org.slf4j.LoggerFactory;
44-
import com.techsenger.weaverbird.gui.WeaverbirdComponents;
4545

4646
/**
4747
*
4848
* @author Pavel Castornii
4949
*/
50-
public class ConsoleTabPresenter<V extends ConsoleTabView, C extends ConsoleTabComposer>
51-
extends AbstractTabPresenter<V, C> implements CompletionPopupAwarePort, ConsoleToolBarAwarePort {
50+
public class ConsoleTabPresenter<V extends ConsoleTabView> extends AbstractTabPresenter<V>
51+
implements CompletionPopupAwarePort, ConsoleToolBarAwarePort {
5252

5353
/**
5454
* Input without prompt. Contains the information about the current token (next to caret).
@@ -132,8 +132,9 @@ private static boolean isTokenChar(char ch) {
132132

133133
public ConsoleTabPresenter(V view, Framework framework, ClientService client, ClientSession session) {
134134
super(view);
135-
getComposer().setClient(client);
136-
getComposer().setSession(session);
135+
var composer = getView().getComposer();
136+
composer.setClient(client);
137+
composer.setSession(session);
137138
CommandExecutor ex = null;
138139
try {
139140
ex = CommandExecutorFactory.create(framework, client);
@@ -169,7 +170,7 @@ public void onElementSubmitted(CompletionType type, String text) {
169170

170171
@Override
171172
public void onPopupClose() {
172-
getComposer().removePopup();
173+
getView().getComposer().removePopup();
173174
getView().requestFocus();
174175
}
175176

@@ -228,9 +229,10 @@ protected void showPrompt() {
228229
}
229230

230231
protected void onElementSubmitted() {
231-
var popup = getComposer().getPopupPort();
232+
var composer = getView().getComposer();
233+
var popup = composer.getPopupPort();
232234
addElement(popup.getType(), popup.getSelectedItemText());
233-
getComposer().removePopup();
235+
composer.removePopup();
234236
getView().requestFocus();
235237
}
236238

@@ -251,7 +253,7 @@ protected void onAutocomplete(String paragraph) {
251253
if (processingCommand) {
252254
var commands = executor.getCommandsByName().values();
253255
var sessionExists = executor.getCommandContext().getSession() != null;
254-
getComposer().addCommandPopup(commands, sessionExists, elementToken, offset);
256+
getView().getComposer().addCommandPopup(commands, sessionExists, elementToken, offset);
255257
} else {
256258
var splits = this.input.text.trim().split(Pattern.quote(" "));
257259
var cmd = splits[0].trim();
@@ -260,7 +262,7 @@ protected void onAutocomplete(String paragraph) {
260262
}
261263
var command = executor.getCommandsByName().get(cmd);
262264
if (command != null) {
263-
getComposer().addParameterPopup(command.getParameters(), elementToken, offset);
265+
getView().getComposer().addParameterPopup(command.getParameters(), elementToken, offset);
264266
}
265267
}
266268
}
@@ -270,7 +272,7 @@ protected void onCaretChanged(Integer caretOffset) {
270272
}
271273

272274
protected void onCopyAvailable(boolean value) {
273-
getComposer().getToolBarPort().onCopyAvailable(value);
275+
getView().getComposer().getToolBarPort().onCopyAvailable(value);
274276
}
275277

276278
protected void onCommandsSubmitted(String paragraph, int width) {
@@ -295,7 +297,7 @@ protected void onCommandsSubmitted(String paragraph, int width) {
295297
});
296298
var newSession = executor.getCommandContext().getSession();
297299
if (!Objects.equals(oldSession, newSession)) {
298-
UiExecutor.execute(() -> getComposer().getToolBarPort().updateSession(newSession));
300+
UiExecutor.execute(() -> getView().getComposer().getToolBarPort().updateSession(newSession));
299301
}
300302
updatePrompt();
301303
// syncSessionBarAndContext(null);
@@ -318,7 +320,7 @@ protected void onCommandsSubmitted(String paragraph, int width) {
318320
}
319321

320322
protected void onTextInput(String paragraph) {
321-
var popup = getComposer().getPopupPort();
323+
var popup = getView().getComposer().getPopupPort();
322324
if (popup == null) {
323325
return;
324326
}
@@ -332,7 +334,7 @@ protected void onTextInput(String paragraph) {
332334
}
333335

334336
protected void onMoveUp() {
335-
var popup = getComposer().getPopupPort();
337+
var popup = getView().getComposer().getPopupPort();
336338
if (popup == null) {
337339
scrollHistoryUp();
338340
} else {
@@ -341,7 +343,7 @@ protected void onMoveUp() {
341343
}
342344

343345
protected void onMoveDown() {
344-
var popup = getComposer().getPopupPort();
346+
var popup = getView().getComposer().getPopupPort();
345347
if (popup == null) {
346348
scrollHistoryDown();
347349
} else {
@@ -404,7 +406,7 @@ private void addElement(CompletionType type, String element) {
404406
}
405407
var newInput = oldInput + (element == null ? "" : element + " ");
406408
getView().updateInput(newInput);
407-
getComposer().removePopup();
409+
getView().getComposer().removePopup();
408410
getView().requestFocus();
409411
this.input = null;
410412
}

weaverbird-gui/src/main/java/com/techsenger/weaverbird/gui/console/ConsoleTabView.java

Lines changed: 26 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,13 @@
1616

1717
package com.techsenger.weaverbird.gui.console;
1818

19-
import com.techsenger.weaverbird.core.api.message.Message;
2019
import com.techsenger.tabshell.core.tab.TabView;
20+
import com.techsenger.weaverbird.core.api.message.Message;
21+
import com.techsenger.weaverbird.executor.api.command.CommandInfo;
22+
import com.techsenger.weaverbird.executor.api.command.ParameterDescriptor;
23+
import com.techsenger.weaverbird.net.client.api.ClientService;
24+
import com.techsenger.weaverbird.net.client.api.ClientSession;
25+
import java.util.Collection;
2126
import java.util.List;
2227
import java.util.Set;
2328
import javafx.scene.text.Font;
@@ -28,6 +33,26 @@
2833
*/
2934
public interface ConsoleTabView extends TabView {
3035

36+
interface Composer extends TabView.Composer {
37+
38+
void setClient(ClientService client);
39+
40+
void setSession(ClientSession session);
41+
42+
ConsoleToolBarPort getToolBarPort();
43+
44+
void addCommandPopup(Collection<CommandInfo> commands, boolean sessionExists, String token, int offset);
45+
46+
void addParameterPopup(List<ParameterDescriptor> parameters, String token, int offset);
47+
48+
CompletionPopupPort getPopupPort();
49+
50+
void removePopup();
51+
}
52+
53+
@Override
54+
Composer getComposer();
55+
3156
void setMonospaceFont(Font font);
3257

3358
void printPrompt(String prompt);

weaverbird-gui/src/main/java/com/techsenger/weaverbird/gui/console/ConsoleToolBarFxView.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,11 +17,11 @@
1717
package com.techsenger.weaverbird.gui.console;
1818

1919
import atlantafx.base.theme.Styles;
20-
import com.techsenger.weaverbird.gui.session.AbstractSessionToolBarFxView;
21-
import com.techsenger.weaverbird.gui.style.ConsoleIcons;
2220
import com.techsenger.tabshell.material.icon.FontIconView;
2321
import com.techsenger.tabshell.material.style.StyleClasses;
2422
import com.techsenger.toolkit.fx.Spacer;
23+
import com.techsenger.weaverbird.gui.session.AbstractSessionToolBarFxView;
24+
import com.techsenger.weaverbird.gui.style.ConsoleIcons;
2525
import javafx.geometry.Orientation;
2626
import javafx.scene.control.Button;
2727
import javafx.scene.control.Separator;
@@ -31,7 +31,7 @@
3131
*
3232
* @author Pavel Castornii
3333
*/
34-
public class ConsoleToolBarFxView<P extends ConsoleToolBarPresenter<?, ?>> extends AbstractSessionToolBarFxView<P>
34+
public class ConsoleToolBarFxView<P extends ConsoleToolBarPresenter<?>> extends AbstractSessionToolBarFxView<P>
3535
implements ConsoleToolBarView {
3636

3737
private final Button clearButton = new Button(null, new FontIconView(ConsoleIcons.CLEAR));

weaverbird-gui/src/main/java/com/techsenger/weaverbird/gui/console/ConsoleToolBarPresenter.java

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -16,19 +16,18 @@
1616

1717
package com.techsenger.weaverbird.gui.console;
1818

19+
import com.techsenger.patternfx.mvp.Descriptor;
20+
import com.techsenger.weaverbird.gui.WeaverbirdComponents;
1921
import com.techsenger.weaverbird.gui.session.AbstractSessionToolBarPresenter;
2022
import com.techsenger.weaverbird.net.client.api.ClientService;
2123
import com.techsenger.weaverbird.net.client.api.ClientSession;
22-
import com.techsenger.patternfx.mvp.Descriptor;
23-
import com.techsenger.tabshell.core.area.AreaComposer;
24-
import com.techsenger.weaverbird.gui.WeaverbirdComponents;
2524

2625
/**
2726
*
2827
* @author Pavel Castornii
2928
*/
30-
public class ConsoleToolBarPresenter<V extends ConsoleToolBarView, C extends AreaComposer>
31-
extends AbstractSessionToolBarPresenter<V, C> implements ConsoleToolBarPort {
29+
public class ConsoleToolBarPresenter<V extends ConsoleToolBarView> extends AbstractSessionToolBarPresenter<V>
30+
implements ConsoleToolBarPort {
3231

3332
private final ConsoleToolBarAwarePort toolBarAware;
3433

weaverbird-gui/src/main/java/com/techsenger/weaverbird/gui/diagram/DiagramTabComposer.java

Lines changed: 0 additions & 36 deletions
This file was deleted.

0 commit comments

Comments
 (0)