├── .gitignore
├── .github
├── FUNDING.yml
└── ISSUE_TEMPLATE
│ ├── question.md
│ ├── bug_report.md
│ └── feature_request.md
├── tabshell-demos
├── tabshell-demos-full
│ └── src
│ │ └── main
│ │ ├── resources
│ │ ├── hex.png
│ │ └── log4j2.xml
│ │ └── java
│ │ └── com
│ │ └── techsenger
│ │ └── tabshell
│ │ └── demos
│ │ └── full
│ │ ├── dialogs
│ │ ├── Dialog.java
│ │ └── DialogItem.java
│ │ ├── text
│ │ └── TextEditorTabHistory.java
│ │ ├── dock
│ │ ├── TextViewerViewModel.java
│ │ └── DockLayoutTabHistory.java
│ │ ├── hex
│ │ ├── DemoHexEditorTabMediator.java
│ │ └── DemoHexEditorTabView.java
│ │ └── menu
│ │ └── DemoFileMenuNames.java
├── tabshell-demos-core
│ └── src
│ │ └── main
│ │ ├── resources
│ │ └── log4j2.xml
│ │ └── java
│ │ ├── com
│ │ └── techsenger
│ │ │ └── tabshell
│ │ │ └── demos
│ │ │ └── core
│ │ │ ├── DemoComponentNames.java
│ │ │ └── tab
│ │ │ └── DemoTabMediator.java
│ │ └── module-info.java
└── pom.xml
├── tabshell-icons
└── src
│ └── main
│ ├── resources
│ └── com
│ │ └── techsenger
│ │ └── tabshell
│ │ └── icons
│ │ ├── font
│ │ ├── materialdesignicons-webfont.ttf
│ │ └── materialdesignicons-license.txt
│ │ ├── web.css
│ │ ├── terminal.css
│ │ ├── text.css
│ │ └── hex.css
│ └── java
│ └── module-info.java
├── tabshell-text
└── src
│ ├── test
│ └── resources
│ │ └── log4j2.xml
│ └── main
│ ├── java
│ └── com
│ │ └── techsenger
│ │ └── tabshell
│ │ └── text
│ │ ├── package-info.java
│ │ ├── editor
│ │ ├── EditorTabMediator.java
│ │ └── AbstractEditorTabHistory.java
│ │ ├── viewer
│ │ ├── AbstractViewerTabHistory.java
│ │ ├── FindPaneViewModel.java
│ │ ├── FindPaneView.java
│ │ └── FindMatchesResetPolicy.java
│ │ ├── style
│ │ └── TextIcons.java
│ │ └── TextComponentNames.java
│ └── resources
│ └── com
│ └── techsenger
│ └── tabshell
│ └── text
│ └── editor
│ └── editor.css
├── tabshell-hex
└── src
│ └── main
│ └── java
│ └── com
│ └── techsenger
│ └── tabshell
│ └── hex
│ ├── package-info.java
│ ├── editor
│ ├── ColumnSeparator.java
│ ├── CaretShape.java
│ ├── HexAreaMediator.java
│ ├── EditorPanel.java
│ ├── NumberBase.java
│ └── HexEditorTabHistory.java
│ ├── inspector
│ ├── ValueProvider.java
│ ├── NumberBaseConverter.java
│ └── SizeProvider.java
│ └── style
│ └── HexIcons.java
├── tabshell-layout
└── src
│ └── main
│ ├── java
│ └── com
│ │ └── techsenger
│ │ └── tabshell
│ │ └── layout
│ │ ├── package-info.java
│ │ ├── dock
│ │ ├── SideBarPolicy.java
│ │ ├── TabDockMediator.java
│ │ ├── DockConstants.java
│ │ ├── SideBarMediator.java
│ │ ├── SideBarHistory.java
│ │ ├── TabPopupMediator.java
│ │ └── TabDockComponent.java
│ │ ├── tabhost
│ │ └── TabHostMediator.java
│ │ ├── splittab
│ │ └── SplitTabMediator.java
│ │ └── workertab
│ │ ├── WorkerTabMediator.java
│ │ └── AbstractWorkerTabHistory.java
│ └── resources
│ └── com
│ └── techsenger
│ └── tabshell
│ └── layout
│ ├── workertab
│ └── workertab.css
│ └── dock
│ ├── dock-layout.css
│ └── tab-popup.css
├── tabshell-web
└── src
│ └── main
│ ├── resources
│ └── com
│ │ └── techsenger
│ │ └── tabshell
│ │ └── web
│ │ └── web.css
│ └── java
│ └── com
│ └── techsenger
│ └── tabshell
│ └── web
│ ├── style
│ └── WebIcons.java
│ ├── WebBrowserTabMediator.java
│ └── WebComponentNames.java
├── tabshell-core
└── src
│ ├── test
│ └── java
│ │ └── module-info.java
│ └── main
│ ├── java
│ └── com
│ │ └── techsenger
│ │ └── tabshell
│ │ └── core
│ │ ├── style
│ │ └── CssAnchor.java
│ │ ├── Callback.java
│ │ ├── dialog
│ │ ├── DialogScope.java
│ │ ├── DialogMediator.java
│ │ ├── DialogComponent.java
│ │ ├── DialogView.java
│ │ └── DialogManager.java
│ │ ├── registry
│ │ ├── MenuElementType.java
│ │ ├── ControlRegistrar.java
│ │ └── ControlFactory.java
│ │ ├── tab
│ │ ├── AbstractShellTabHistory.java
│ │ ├── TabContainerView.java
│ │ ├── AbstractTabHistory.java
│ │ ├── TabMediator.java
│ │ ├── TabComponent.java
│ │ ├── ShellTabMediator.java
│ │ ├── ShellTabView.java
│ │ ├── ShellTabComponent.java
│ │ ├── TabView.java
│ │ └── ShellTabViewModel.java
│ │ ├── ShellMediator.java
│ │ ├── area
│ │ ├── AreaMediator.java
│ │ ├── AbstractAreaHistory.java
│ │ ├── AreaComponent.java
│ │ ├── AreaView.java
│ │ ├── AreaViewModel.java
│ │ └── AbstractAreaComponent.java
│ │ ├── page
│ │ ├── PageMediator.java
│ │ ├── PageComponent.java
│ │ ├── AbstractPageHistory.java
│ │ ├── PageView.java
│ │ ├── PageViewModel.java
│ │ └── AbstractPageComponent.java
│ │ ├── settings
│ │ ├── Settings.java
│ │ ├── xml
│ │ │ ├── ThemeAdapter.java
│ │ │ └── FontAdapter.java
│ │ ├── ViewerSettings.java
│ │ └── TabSymbolSettings.java
│ │ ├── element
│ │ ├── ElementMediator.java
│ │ ├── AbstractElementHistory.java
│ │ ├── ElementComponent.java
│ │ ├── ElementViewModel.java
│ │ ├── ElementView.java
│ │ └── AbstractElementViewModel.java
│ │ ├── CoreComponentNames.java
│ │ ├── SelectableViewModel.java
│ │ ├── ClosePreparationResult.java
│ │ ├── SelectableView.java
│ │ ├── ShellComponent.java
│ │ ├── CloseScope.java
│ │ ├── menu
│ │ └── manager
│ │ │ └── ActionInterceptor.java
│ │ └── CloseRequestResult.java
│ └── resources
│ └── com
│ └── techsenger
│ └── tabshell
│ └── core
│ └── style
│ ├── core-nord-dark.css
│ ├── core-nord-light.css
│ ├── core-primer-dark.css
│ ├── core-primer-light.css
│ ├── core-dracula.css
│ ├── core-cupertino-dark.css
│ └── core-cupertino-light.css
├── tabshell-shared
└── src
│ ├── test
│ └── java
│ │ └── module-info.java
│ └── main
│ ├── java
│ ├── com
│ │ └── techsenger
│ │ │ └── tabshell
│ │ │ └── shared
│ │ │ └── find
│ │ │ └── FindPaneMediator.java
│ └── module-info.java
│ └── resources
│ └── com
│ └── techsenger
│ └── tabshell
│ └── shared
│ └── find
│ └── find.css
├── tabshell-storage
└── src
│ └── main
│ └── java
│ ├── com
│ └── techsenger
│ │ └── tabshell
│ │ └── storage
│ │ ├── FileType.java
│ │ ├── FileStorageType.java
│ │ ├── FileTaskProvider.java
│ │ ├── FileColumnNames.java
│ │ ├── UnixFileStorage.java
│ │ └── InvalidFileException.java
│ └── module-info.java
├── tabshell-dialogs
└── src
│ └── main
│ ├── java
│ └── com
│ │ └── techsenger
│ │ └── tabshell
│ │ └── dialogs
│ │ ├── file
│ │ ├── FileChooserType.java
│ │ ├── FileOperatorMediator.java
│ │ ├── FileOperatorViewModel.java
│ │ └── FileChooserDialogMediator.java
│ │ ├── alert
│ │ ├── AlertDialogType.java
│ │ └── AlertDialogMediator.java
│ │ ├── yesno
│ │ └── YesNoDialogMediator.java
│ │ ├── simple
│ │ ├── SimpleDialogMediator.java
│ │ └── AbstractSimpleDialogHistory.java
│ │ ├── page
│ │ ├── PageDialogMediator.java
│ │ ├── AbstractPageDialogHistory.java
│ │ └── AbstractPageDialogViewModel.java
│ │ └── DialogComponentNames.java
│ └── resources
│ └── com
│ └── techsenger
│ └── tabshell
│ └── dialogs
│ ├── alert
│ └── alert.css
│ ├── yesno
│ └── yesno.css
│ └── file
│ └── file-dialog.css
├── tabshell-material
└── src
│ └── main
│ ├── java
│ └── com
│ │ └── techsenger
│ │ └── tabshell
│ │ └── material
│ │ ├── icon
│ │ ├── GenericFontIcon.java
│ │ ├── GenericImageIcon.java
│ │ ├── Icon.java
│ │ ├── ImageIcon.java
│ │ ├── StyleFontIcon.java
│ │ ├── StyleImageIcon.java
│ │ ├── AbstractIcon.java
│ │ └── FontIcon.java
│ │ ├── menu
│ │ ├── NamedMenuState.java
│ │ ├── MenuItemName.java
│ │ ├── MenuGroupName.java
│ │ ├── NamedMenuItemState.java
│ │ ├── MenuName.java
│ │ └── NamedMenuUpdate.java
│ │ ├── theme
│ │ ├── ThemePalette16.java
│ │ ├── DefaultThemePalette16.java
│ │ ├── ThemeStringConverter.java
│ │ └── DefaultThemePalette32.java
│ │ ├── textarea
│ │ ├── TextAreaStyleNames.java
│ │ └── TextAreaStyleName.java
│ │ ├── Positioned.java
│ │ ├── table
│ │ ├── TreeTableColumnName.java
│ │ └── TableColumnName.java
│ │ ├── Named.java
│ │ ├── scrollbar
│ │ └── ShellScrollBarSkin.java
│ │ ├── button
│ │ └── ToggleButtonHistory.java
│ │ └── style
│ │ └── SizeConstants.java
│ └── resources
│ └── com
│ └── techsenger
│ └── tabshell
│ └── material
│ ├── search-field.css
│ └── style
│ ├── material-caspian.css
│ └── material-modena.css
├── tabshell-jfx
└── src
│ └── main
│ ├── java
│ └── com
│ │ └── techsenger
│ │ └── tabshell
│ │ └── jfx
│ │ ├── eventlog
│ │ └── LogEntry.java
│ │ ├── JfxTabDockMediator.java
│ │ ├── inspector
│ │ ├── PropertyDialogMediator.java
│ │ └── JfxInspectorTabMediator.java
│ │ ├── JfxComponentNames.java
│ │ └── style
│ │ └── JfxIcons.java
│ └── resources
│ └── com
│ └── techsenger
│ └── tabshell
│ └── jfx
│ └── inspector
│ └── inspector-tab.css
├── tabshell-terminal
└── src
│ └── main
│ └── java
│ └── com
│ └── techsenger
│ └── tabshell
│ └── terminal
│ ├── FindPaneHistory.java
│ ├── style
│ └── TerminalIcons.java
│ ├── TerminalTabMediator.java
│ ├── TerminalComponentNames.java
│ └── TerminalTabHistory.java
└── tabshell-registrars
└── src
└── main
└── java
└── module-info.java
/.gitignore:
--------------------------------------------------------------------------------
1 | target/
--------------------------------------------------------------------------------
/.github/FUNDING.yml:
--------------------------------------------------------------------------------
1 | github: techsenger
--------------------------------------------------------------------------------
/tabshell-demos/tabshell-demos-full/src/main/resources/hex.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/techsenger/tabshell/HEAD/tabshell-demos/tabshell-demos-full/src/main/resources/hex.png
--------------------------------------------------------------------------------
/.github/ISSUE_TEMPLATE/question.md:
--------------------------------------------------------------------------------
1 | ---
2 | name: Question
3 | about: Ask a question about this project
4 | title: ''
5 | labels: question
6 | assignees: ''
7 |
8 | ---
9 |
10 |
11 |
--------------------------------------------------------------------------------
/.github/ISSUE_TEMPLATE/bug_report.md:
--------------------------------------------------------------------------------
1 | ---
2 | name: Bug report
3 | about: Create a report to help us improve the project
4 | title: ''
5 | labels: bug
6 | assignees: ''
7 |
8 | ---
9 |
10 |
11 |
--------------------------------------------------------------------------------
/.github/ISSUE_TEMPLATE/feature_request.md:
--------------------------------------------------------------------------------
1 | ---
2 | name: Feature request
3 | about: Suggest an idea for this project
4 | title: ''
5 | labels: enhancement
6 | assignees: ''
7 |
8 | ---
9 |
10 |
11 |
--------------------------------------------------------------------------------
/tabshell-icons/src/main/resources/com/techsenger/tabshell/icons/font/materialdesignicons-webfont.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/techsenger/tabshell/HEAD/tabshell-icons/src/main/resources/com/techsenger/tabshell/icons/font/materialdesignicons-webfont.ttf
--------------------------------------------------------------------------------
/tabshell-text/src/test/resources/log4j2.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
--------------------------------------------------------------------------------
/tabshell-demos/tabshell-demos-core/src/main/resources/log4j2.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
--------------------------------------------------------------------------------
/tabshell-demos/tabshell-demos-full/src/main/resources/log4j2.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
--------------------------------------------------------------------------------
/tabshell-hex/src/main/java/com/techsenger/tabshell/hex/package-info.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2024-2025 Pavel Castornii.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package com.techsenger.tabshell.hex;
18 |
--------------------------------------------------------------------------------
/tabshell-text/src/main/java/com/techsenger/tabshell/text/package-info.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2024-2025 Pavel Castornii.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package com.techsenger.tabshell.text;
18 |
--------------------------------------------------------------------------------
/tabshell-layout/src/main/java/com/techsenger/tabshell/layout/package-info.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2024-2025 Pavel Castornii.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package com.techsenger.tabshell.layout;
18 |
--------------------------------------------------------------------------------
/tabshell-web/src/main/resources/com/techsenger/tabshell/web/web.css:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2024-2025 Pavel Castornii.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | /*
18 | Author: Pavel Castornii
19 | */
20 |
21 |
22 |
--------------------------------------------------------------------------------
/tabshell-core/src/test/java/module-info.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2024-2025 Pavel Castornii.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | open module com.techsenger.tabshell.core {
18 | requires org.slf4j;
19 |
20 | requires org.junit.jupiter.api;
21 | requires org.assertj.core;
22 | }
23 |
24 |
25 |
--------------------------------------------------------------------------------
/tabshell-demos/pom.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | 4.0.0
4 |
5 | com.techsenger.tabshell
6 | tabshell
7 | 2.0.0-SNAPSHOT
8 |
9 |
10 | com.techsenger.tabshell.demos
11 | tabshell-demos
12 | pom
13 | TabShell - Demos
14 | Demo modules for TabShell
15 |
16 |
17 | tabshell-demos-core
18 | tabshell-demos-full
19 |
20 |
--------------------------------------------------------------------------------
/tabshell-shared/src/test/java/module-info.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2024-2025 Pavel Castornii.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | open module com.techsenger.tabshell.kit.base {
18 |
19 | requires org.junit.jupiter.api;
20 | requires org.assertj.core;
21 | requires org.mockito;
22 | }
23 |
24 |
25 |
--------------------------------------------------------------------------------
/tabshell-core/src/main/java/com/techsenger/tabshell/core/style/CssAnchor.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2024-2025 Pavel Castornii.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package com.techsenger.tabshell.core.style;
18 |
19 | /**
20 | *
21 | * @author Pavel Castornii
22 | */
23 | public class CssAnchor {
24 |
25 | }
26 |
--------------------------------------------------------------------------------
/tabshell-core/src/main/java/com/techsenger/tabshell/core/Callback.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2024-2025 Pavel Castornii.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package com.techsenger.tabshell.core;
18 |
19 | /**
20 | *
21 | * @author Pavel Castornii
22 | */
23 | public interface Callback {
24 |
25 | void call();
26 | }
27 |
--------------------------------------------------------------------------------
/tabshell-core/src/main/java/com/techsenger/tabshell/core/dialog/DialogScope.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2024-2025 Pavel Castornii.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package com.techsenger.tabshell.core.dialog;
18 |
19 | /**
20 | *
21 | * @author Pavel Castornii
22 | */
23 | public enum DialogScope {
24 |
25 | SHELL, TAB
26 | }
27 |
--------------------------------------------------------------------------------
/tabshell-core/src/main/java/com/techsenger/tabshell/core/registry/MenuElementType.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2024-2025 Pavel Castornii.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package com.techsenger.tabshell.core.registry;
18 |
19 | /**
20 | *
21 | * @author Pavel Castornii
22 | */
23 | enum MenuElementType {
24 | GROUP, MENU, ITEM
25 | }
26 |
--------------------------------------------------------------------------------
/tabshell-hex/src/main/java/com/techsenger/tabshell/hex/editor/ColumnSeparator.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2024-2025 Pavel Castornii.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package com.techsenger.tabshell.hex.editor;
18 |
19 | /**
20 | *
21 | * @author Pavel Castornii
22 | */
23 | public enum ColumnSeparator {
24 |
25 | LINE, SPACE
26 | }
27 |
--------------------------------------------------------------------------------
/tabshell-storage/src/main/java/com/techsenger/tabshell/storage/FileType.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2024-2025 Pavel Castornii.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package com.techsenger.tabshell.storage;
18 |
19 | /**
20 | *
21 | * @author Pavel Castornii
22 | */
23 | public enum FileType {
24 |
25 | DIRECTORY, FILE, SYMBOLIC_LINK
26 | }
27 |
--------------------------------------------------------------------------------
/tabshell-dialogs/src/main/java/com/techsenger/tabshell/dialogs/file/FileChooserType.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2024-2025 Pavel Castornii.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package com.techsenger.tabshell.dialogs.file;
18 |
19 | /**
20 | *
21 | * @author Pavel Castornii
22 | */
23 | public enum FileChooserType {
24 |
25 | OPEN, SAVE_AS
26 | }
27 |
--------------------------------------------------------------------------------
/tabshell-material/src/main/java/com/techsenger/tabshell/material/icon/GenericFontIcon.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2024-2025 Pavel Castornii.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package com.techsenger.tabshell.material.icon;
18 |
19 | /**
20 | *
21 | * @author Pavel Castornii
22 | */
23 | public interface GenericFontIcon extends Icon {
24 |
25 | }
26 |
--------------------------------------------------------------------------------
/tabshell-material/src/main/java/com/techsenger/tabshell/material/icon/GenericImageIcon.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2024-2025 Pavel Castornii.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package com.techsenger.tabshell.material.icon;
18 |
19 | /**
20 | *
21 | * @author Pavel Castornii
22 | */
23 | public interface GenericImageIcon extends Icon {
24 |
25 | }
26 |
--------------------------------------------------------------------------------
/tabshell-dialogs/src/main/java/com/techsenger/tabshell/dialogs/alert/AlertDialogType.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2024-2025 Pavel Castornii.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package com.techsenger.tabshell.dialogs.alert;
18 |
19 | /**
20 | *
21 | * @author Pavel Castornii
22 | */
23 | public enum AlertDialogType {
24 |
25 | INFO, WARNING, ERROR
26 | }
27 |
--------------------------------------------------------------------------------
/tabshell-material/src/main/java/com/techsenger/tabshell/material/menu/NamedMenuState.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2024-2025 Pavel Castornii.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package com.techsenger.tabshell.material.menu;
18 |
19 | /**
20 | *
21 | * @author Pavel Castornii
22 | */
23 | public interface NamedMenuState extends NamedMenuItemState {
24 |
25 | }
26 |
--------------------------------------------------------------------------------
/tabshell-hex/src/main/java/com/techsenger/tabshell/hex/inspector/ValueProvider.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2024-2025 Pavel Castornii.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package com.techsenger.tabshell.hex.inspector;
18 |
19 | /**
20 | *
21 | * @author Pavel Castornii
22 | */
23 | public interface ValueProvider {
24 |
25 | T provide(Values values);
26 | }
27 |
--------------------------------------------------------------------------------
/tabshell-material/src/main/java/com/techsenger/tabshell/material/theme/ThemePalette16.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2024-2025 Pavel Castornii.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package com.techsenger.tabshell.material.theme;
18 |
19 | /**
20 | *
21 | * @author Pavel Castornii
22 | */
23 | public interface ThemePalette16 {
24 |
25 | int[] getColors();
26 | }
27 |
--------------------------------------------------------------------------------
/tabshell-core/src/main/java/com/techsenger/tabshell/core/tab/AbstractShellTabHistory.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2024-2025 Pavel Castornii.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package com.techsenger.tabshell.core.tab;
18 |
19 | /**
20 | *
21 | * @author Pavel Castornii
22 | */
23 | public abstract class AbstractShellTabHistory extends AbstractTabHistory {
24 |
25 | }
26 |
--------------------------------------------------------------------------------
/tabshell-hex/src/main/java/com/techsenger/tabshell/hex/editor/CaretShape.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2024-2025 Pavel Castornii.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package com.techsenger.tabshell.hex.editor;
18 |
19 | /**
20 | *
21 | * @author Pavel Castornii
22 | */
23 | public enum CaretShape {
24 |
25 | BAR,
26 |
27 | BLOCK,
28 |
29 | UNDERSCORE
30 | }
31 |
--------------------------------------------------------------------------------
/tabshell-layout/src/main/java/com/techsenger/tabshell/layout/dock/SideBarPolicy.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2024-2025 Pavel Castornii.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package com.techsenger.tabshell.layout.dock;
18 |
19 | /**
20 | *
21 | * @author Pavel Castornii
22 | */
23 | public enum SideBarPolicy {
24 |
25 | EXISTS_ALWAYS, EXISTS_WHEN_TABS_PRESENT
26 | }
27 |
--------------------------------------------------------------------------------
/tabshell-core/src/main/java/com/techsenger/tabshell/core/tab/TabContainerView.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2024-2025 Pavel Castornii.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package com.techsenger.tabshell.core.tab;
18 |
19 | /**
20 | *
21 | * @author Pavel Castornii
22 | */
23 | public interface TabContainerView> {
24 |
25 | T getSelectedTab();
26 | }
27 |
--------------------------------------------------------------------------------
/tabshell-icons/src/main/resources/com/techsenger/tabshell/icons/web.css:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2024-2025 Pavel Castornii.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | /*
18 | Author: Pavel Castornii
19 | */
20 |
21 | @font-face {
22 | src: url('font/materialdesignicons-webfont.ttf');
23 | }
24 |
25 | .font-icon-view.web-browser-icon {
26 | -fx-code-point: 984479; /* web */
27 | }
28 |
--------------------------------------------------------------------------------
/tabshell-demos/tabshell-demos-full/src/main/java/com/techsenger/tabshell/demos/full/dialogs/Dialog.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2024-2025 Pavel Castornii.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package com.techsenger.tabshell.demos.full.dialogs;
18 |
19 | /**
20 | *
21 | * @author Pavel Castornii
22 | */
23 | enum Dialog {
24 |
25 | INFO, WARNING, ERROR, YES_NO, OPEN_FILE, SAVE_FILE
26 | }
27 |
--------------------------------------------------------------------------------
/tabshell-core/src/main/java/com/techsenger/tabshell/core/ShellMediator.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2024-2025 Pavel Castornii.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package com.techsenger.tabshell.core;
18 |
19 | import com.techsenger.patternfx.core.ParentMediator;
20 |
21 | /**
22 | *
23 | * @author Pavel Castornii
24 | */
25 | public interface ShellMediator extends ParentMediator {
26 |
27 | }
28 |
--------------------------------------------------------------------------------
/tabshell-core/src/main/java/com/techsenger/tabshell/core/registry/ControlRegistrar.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2024-2025 Pavel Castornii.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package com.techsenger.tabshell.core.registry;
18 |
19 | /**
20 | *
21 | * @author Pavel Castornii
22 | */
23 | public interface ControlRegistrar {
24 |
25 | void register();
26 |
27 | void unregister();
28 | }
29 |
--------------------------------------------------------------------------------
/tabshell-icons/src/main/resources/com/techsenger/tabshell/icons/terminal.css:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2024-2025 Pavel Castornii.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | /*
18 | Author: Pavel Castornii
19 | */
20 |
21 | @font-face {
22 | src: url('font/materialdesignicons-webfont.ttf');
23 | }
24 |
25 | .font-icon-view.terminal-icon {
26 | -fx-code-point: 985015; /* console-line */
27 | }
28 |
--------------------------------------------------------------------------------
/tabshell-core/src/main/java/com/techsenger/tabshell/core/area/AreaMediator.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2024-2025 Pavel Castornii.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package com.techsenger.tabshell.core.area;
18 |
19 | import com.techsenger.patternfx.core.ChildMediator;
20 |
21 | /**
22 | *
23 | * @author Pavel Castornii
24 | */
25 | public interface AreaMediator extends ChildMediator {
26 |
27 | }
28 |
--------------------------------------------------------------------------------
/tabshell-layout/src/main/resources/com/techsenger/tabshell/layout/workertab/workertab.css:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2024-2025 Pavel Castornii.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | /*
18 | Author: Pavel Castornii
19 | */
20 |
21 | /* icon label */
22 | .status-bar .worker-pane {
23 | -fx-padding: 0 25 0 0;
24 | }
25 |
26 | .status-bar .hyperlink {
27 | -fx-text-fill: -color-fg-default;
28 | }
29 |
--------------------------------------------------------------------------------
/tabshell-core/src/main/java/com/techsenger/tabshell/core/page/PageMediator.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2024-2025 Pavel Castornii.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package com.techsenger.tabshell.core.page;
18 |
19 | import com.techsenger.tabshell.core.area.AreaMediator;
20 |
21 | /**
22 | *
23 | * @author Pavel Castornii
24 | */
25 | public interface PageMediator extends AreaMediator {
26 |
27 | }
28 |
--------------------------------------------------------------------------------
/tabshell-core/src/main/java/com/techsenger/tabshell/core/settings/Settings.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2024-2025 Pavel Castornii.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package com.techsenger.tabshell.core.settings;
18 |
19 | /**
20 | *
21 | * @author Pavel Castornii
22 | */
23 | public interface Settings {
24 |
25 | AppearanceSettings getAppearance();
26 |
27 | ViewerSettings getViewer();
28 | }
29 |
--------------------------------------------------------------------------------
/tabshell-dialogs/src/main/resources/com/techsenger/tabshell/dialogs/alert/alert.css:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2024-2025 Pavel Castornii.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | /*
18 | Author : Pavel Castornii
19 | */
20 |
21 | .message-box {
22 |
23 | }
24 |
25 | .message-box > .message-icon-view {
26 | -fx-font-size: 3em;
27 | }
28 |
29 | .message-box > .message-label {
30 | -fx-wrap-text: true;
31 | }
--------------------------------------------------------------------------------
/tabshell-dialogs/src/main/resources/com/techsenger/tabshell/dialogs/yesno/yesno.css:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2024-2025 Pavel Castornii.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | /*
18 | Author : Pavel Castornii
19 | */
20 |
21 | .message-box {
22 |
23 | }
24 |
25 | .message-box > .message-icon-view {
26 | -fx-font-size: 3em;
27 | }
28 |
29 | .message-box > .message-label {
30 | -fx-wrap-text: true;
31 | }
--------------------------------------------------------------------------------
/tabshell-icons/src/main/java/module-info.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2024-2025 Pavel Castornii.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | module com.techsenger.tabshell.icons {
18 | requires org.slf4j;
19 | requires com.techsenger.tabshell.material;
20 |
21 | exports com.techsenger.tabshell.icons;
22 |
23 | opens com.techsenger.tabshell.icons;
24 | opens com.techsenger.tabshell.icons.font;
25 | }
26 |
--------------------------------------------------------------------------------
/tabshell-core/src/main/java/com/techsenger/tabshell/core/element/ElementMediator.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2024-2025 Pavel Castornii.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package com.techsenger.tabshell.core.element;
18 |
19 | import com.techsenger.patternfx.core.ChildMediator;
20 |
21 | /**
22 | *
23 | * @author Pavel Castornii
24 | */
25 | public interface ElementMediator extends ChildMediator {
26 |
27 | }
28 |
--------------------------------------------------------------------------------
/tabshell-core/src/main/java/com/techsenger/tabshell/core/tab/AbstractTabHistory.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2024-2025 Pavel Castornii.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package com.techsenger.tabshell.core.tab;
18 |
19 | import com.techsenger.patternfx.core.AbstractHistory;
20 |
21 | /**
22 | *
23 | * @author Pavel Castornii
24 | */
25 | public abstract class AbstractTabHistory extends AbstractHistory {
26 |
27 | }
28 |
--------------------------------------------------------------------------------
/tabshell-core/src/main/java/com/techsenger/tabshell/core/tab/TabMediator.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2024-2025 Pavel Castornii.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package com.techsenger.tabshell.core.tab;
18 |
19 | import com.techsenger.patternfx.core.ChildMediator;
20 |
21 | /**
22 | *
23 | * @author Pavel Castornii
24 | */
25 | public interface TabMediator extends ChildMediator {
26 |
27 | void remove();
28 | }
29 |
--------------------------------------------------------------------------------
/tabshell-dialogs/src/main/java/com/techsenger/tabshell/dialogs/file/FileOperatorMediator.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2024-2025 Pavel Castornii.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package com.techsenger.tabshell.dialogs.file;
18 |
19 | /**
20 | *
21 | * @author Pavel Castornii
22 | */
23 | public interface FileOperatorMediator {
24 |
25 | void addFileChooserDialog(FileChooserDialogViewModel> viewModel);
26 | }
27 |
--------------------------------------------------------------------------------
/tabshell-hex/src/main/java/com/techsenger/tabshell/hex/inspector/NumberBaseConverter.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2024-2025 Pavel Castornii.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package com.techsenger.tabshell.hex.inspector;
18 |
19 | /**
20 | *
21 | * @author Pavel Castornii
22 | */
23 | @FunctionalInterface
24 | public interface NumberBaseConverter {
25 |
26 | NumberBases convert(T value, int bits);
27 |
28 | }
29 |
--------------------------------------------------------------------------------
/tabshell-layout/src/main/java/com/techsenger/tabshell/layout/tabhost/TabHostMediator.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2024-2025 Pavel Castornii.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package com.techsenger.tabshell.layout.tabhost;
18 |
19 | import com.techsenger.tabshell.core.area.AreaMediator;
20 |
21 | /**
22 | *
23 | * @author Pavel Castornii
24 | */
25 | public interface TabHostMediator extends AreaMediator {
26 |
27 | }
28 |
--------------------------------------------------------------------------------
/tabshell-layout/src/main/resources/com/techsenger/tabshell/layout/dock/dock-layout.css:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2024-2025 Pavel Castornii.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | /*
18 | Author: Pavel Castornii
19 | */
20 | .dock-layout .indicator {
21 | -fx-fill: -color-accent-5;
22 | -fx-stroke: -color-accent-7;
23 | -fx-stroke-width: 2;
24 | -fx-stroke-type: inside;
25 | -fx-opacity: 0.3;
26 | }
27 |
28 |
--------------------------------------------------------------------------------
/tabshell-material/src/main/java/com/techsenger/tabshell/material/textarea/TextAreaStyleNames.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2024-2025 Pavel Castornii.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package com.techsenger.tabshell.material.textarea;
18 |
19 | /**
20 | *
21 | * @author Pavel Castornii
22 | */
23 | public interface TextAreaStyleNames {
24 |
25 | TextAreaStyleName FIND_HIGHLIGHT = new TextAreaStyleName();
26 | }
27 |
--------------------------------------------------------------------------------
/tabshell-material/src/main/resources/com/techsenger/tabshell/material/search-field.css:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2024-2025 Pavel Castornii.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | /*
18 | Author : Pavel Castornii
19 | */
20 | .search-field.extra-dense > .combo-box {
21 | -fx-padding: 0;
22 | }
23 |
24 | .search-field.extra-dense > .combo-box > .text-field {
25 | -fx-padding: 0.15em 0.6em 0.15em 0.6em;
26 | }
27 |
28 |
--------------------------------------------------------------------------------
/tabshell-shared/src/main/java/com/techsenger/tabshell/shared/find/FindPaneMediator.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2024-2025 Pavel Castornii.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package com.techsenger.tabshell.shared.find;
18 |
19 | import com.techsenger.tabshell.core.area.AreaMediator;
20 |
21 | /**
22 | *
23 | * @author Pavel Castornii
24 | */
25 | public interface FindPaneMediator extends AreaMediator {
26 |
27 | }
28 |
--------------------------------------------------------------------------------
/tabshell-core/src/main/java/com/techsenger/tabshell/core/area/AbstractAreaHistory.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2024-2025 Pavel Castornii.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package com.techsenger.tabshell.core.area;
18 |
19 | import com.techsenger.patternfx.core.AbstractHistory;
20 |
21 | /**
22 | *
23 | * @author Pavel Castornii
24 | */
25 | public abstract class AbstractAreaHistory extends AbstractHistory {
26 |
27 | }
28 |
--------------------------------------------------------------------------------
/tabshell-jfx/src/main/java/com/techsenger/tabshell/jfx/eventlog/LogEntry.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2024-2025 Pavel Castornii.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package com.techsenger.tabshell.jfx.eventlog;
18 |
19 | import devtoolsfx.event.ConnectorEvent;
20 |
21 | /**
22 | *
23 | * @author Pavel Castornii
24 | */
25 | public record LogEntry(long timestamp, String zonedTime, String message, ConnectorEvent event) { }
26 |
--------------------------------------------------------------------------------
/tabshell-layout/src/main/java/com/techsenger/tabshell/layout/dock/TabDockMediator.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2024-2025 Pavel Castornii.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package com.techsenger.tabshell.layout.dock;
18 |
19 | import com.techsenger.tabshell.layout.tabhost.TabHostMediator;
20 |
21 | /**
22 | *
23 | * @author Pavel Castornii
24 | */
25 | public interface TabDockMediator extends TabHostMediator {
26 |
27 | }
28 |
--------------------------------------------------------------------------------
/tabshell-core/src/main/java/com/techsenger/tabshell/core/tab/TabComponent.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2024-2025 Pavel Castornii.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package com.techsenger.tabshell.core.tab;
18 |
19 | import com.techsenger.patternfx.core.ChildComponent;
20 |
21 | /**
22 | *
23 | * @author Pavel Castornii
24 | */
25 | public interface TabComponent> extends ChildComponent {
26 |
27 | }
28 |
--------------------------------------------------------------------------------
/tabshell-terminal/src/main/java/com/techsenger/tabshell/terminal/FindPaneHistory.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2024-2025 Pavel Castornii.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package com.techsenger.tabshell.terminal;
18 |
19 | import com.techsenger.tabshell.shared.find.AbstractFindPaneHistory;
20 |
21 | /**
22 | *
23 | * @author Pavel Castornii
24 | */
25 | public class FindPaneHistory extends AbstractFindPaneHistory {
26 |
27 | }
28 |
--------------------------------------------------------------------------------
/tabshell-text/src/main/java/com/techsenger/tabshell/text/editor/EditorTabMediator.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2024-2025 Pavel Castornii.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package com.techsenger.tabshell.text.editor;
18 |
19 | import com.techsenger.tabshell.text.viewer.ViewerTabMediator;
20 |
21 | /**
22 | *
23 | * @author Pavel Castornii
24 | */
25 | public interface EditorTabMediator extends ViewerTabMediator {
26 |
27 | }
28 |
--------------------------------------------------------------------------------
/tabshell-core/src/main/java/com/techsenger/tabshell/core/area/AreaComponent.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2024-2025 Pavel Castornii.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package com.techsenger.tabshell.core.area;
18 |
19 | import com.techsenger.patternfx.core.ChildComponent;
20 |
21 | /**
22 | *
23 | * @author Pavel Castornii
24 | */
25 | public interface AreaComponent> extends ChildComponent {
26 |
27 | }
28 |
--------------------------------------------------------------------------------
/tabshell-core/src/main/java/com/techsenger/tabshell/core/dialog/DialogMediator.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2024-2025 Pavel Castornii.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package com.techsenger.tabshell.core.dialog;
18 |
19 | import com.techsenger.tabshell.core.area.AreaMediator;
20 |
21 | /**
22 | *
23 | * @author Pavel Castornii
24 | */
25 | public interface DialogMediator extends AreaMediator {
26 |
27 | void remove();
28 | }
29 |
--------------------------------------------------------------------------------
/tabshell-core/src/main/java/com/techsenger/tabshell/core/element/AbstractElementHistory.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2024-2025 Pavel Castornii.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package com.techsenger.tabshell.core.element;
18 |
19 | import com.techsenger.patternfx.core.AbstractHistory;
20 |
21 | /**
22 | *
23 | * @author Pavel Castornii
24 | */
25 | public abstract class AbstractElementHistory extends AbstractHistory {
26 |
27 | }
28 |
--------------------------------------------------------------------------------
/tabshell-core/src/main/java/com/techsenger/tabshell/core/page/PageComponent.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2024-2025 Pavel Castornii.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package com.techsenger.tabshell.core.page;
18 |
19 | import com.techsenger.tabshell.core.area.AreaComponent;
20 |
21 | /**
22 | *
23 | * @author Pavel Castornii
24 | */
25 | public interface PageComponent> extends AreaComponent {
26 |
27 | }
28 |
--------------------------------------------------------------------------------
/tabshell-core/src/main/resources/com/techsenger/tabshell/core/style/core-nord-dark.css:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2024-2025 Pavel Castornii.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | /*
18 | Author: Pavel Castornii
19 | */
20 |
21 | .stage-box .menu-item:focused {
22 | -fx-background-color: -color-base-7, -color-base-7;
23 | }
24 |
25 | .shadow {
26 | -fx-effect: dropshadow(three-pass-box, -color-shadow-default, 8px, 0.6, 0, 2);
27 | }
28 |
--------------------------------------------------------------------------------
/tabshell-core/src/main/resources/com/techsenger/tabshell/core/style/core-nord-light.css:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2024-2025 Pavel Castornii.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | /*
18 | Author: Pavel Castornii
19 | */
20 |
21 | .stage-box .menu-item:focused {
22 | -fx-background-color: -color-base-1, -color-base-1;
23 | }
24 |
25 | .shadow {
26 | -fx-effect: dropshadow(three-pass-box, -color-shadow-default, 6px, 0.3, 0, 2);
27 | }
28 |
--------------------------------------------------------------------------------
/tabshell-dialogs/src/main/java/com/techsenger/tabshell/dialogs/yesno/YesNoDialogMediator.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2024-2025 Pavel Castornii.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package com.techsenger.tabshell.dialogs.yesno;
18 |
19 | import com.techsenger.tabshell.core.dialog.DialogMediator;
20 |
21 | /**
22 | *
23 | * @author Pavel Castornii
24 | */
25 | public interface YesNoDialogMediator extends DialogMediator {
26 |
27 | }
28 |
--------------------------------------------------------------------------------
/tabshell-layout/src/main/java/com/techsenger/tabshell/layout/splittab/SplitTabMediator.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2024-2025 Pavel Castornii.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package com.techsenger.tabshell.layout.splittab;
18 |
19 | import com.techsenger.tabshell.core.tab.ShellTabMediator;
20 |
21 | /**
22 | *
23 | * @author Pavel Castornii
24 | */
25 | public interface SplitTabMediator extends ShellTabMediator {
26 |
27 | }
28 |
--------------------------------------------------------------------------------
/tabshell-core/src/main/resources/com/techsenger/tabshell/core/style/core-primer-dark.css:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2024-2025 Pavel Castornii.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | /*
18 | Author: Pavel Castornii
19 | */
20 |
21 | .stage-box .menu-item:focused {
22 | -fx-background-color: -color-base-7, -color-base-7;
23 | }
24 |
25 | .shadow {
26 | -fx-effect: dropshadow(three-pass-box, -color-shadow-default, 8px, 0.6, 0, 2);
27 | }
28 |
--------------------------------------------------------------------------------
/tabshell-core/src/main/resources/com/techsenger/tabshell/core/style/core-primer-light.css:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2024-2025 Pavel Castornii.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | /*
18 | Author: Pavel Castornii
19 | */
20 |
21 | .stage-box .menu-item:focused {
22 | -fx-background-color: -color-base-1, -color-base-1;
23 | }
24 |
25 | .shadow {
26 | -fx-effect: dropshadow(three-pass-box, -color-shadow-default, 6px, 0.3, 0, 2);
27 | }
28 |
--------------------------------------------------------------------------------
/tabshell-dialogs/src/main/java/com/techsenger/tabshell/dialogs/simple/SimpleDialogMediator.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2024-2025 Pavel Castornii.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package com.techsenger.tabshell.dialogs.simple;
18 |
19 | import com.techsenger.tabshell.core.dialog.DialogMediator;
20 |
21 | /**
22 | *
23 | * @author Pavel Castornii
24 | */
25 | public interface SimpleDialogMediator extends DialogMediator {
26 |
27 | }
28 |
--------------------------------------------------------------------------------
/tabshell-storage/src/main/java/com/techsenger/tabshell/storage/FileStorageType.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2024-2025 Pavel Castornii.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package com.techsenger.tabshell.storage;
18 |
19 | /**
20 | * The types are defined based on the possibilities of their identification.
21 | *
22 | * @author Pavel Castornii
23 | */
24 | public enum FileStorageType {
25 |
26 | BASE, FLOPPY, OPTICAL, NETWORK
27 | }
28 |
--------------------------------------------------------------------------------
/tabshell-core/src/main/java/com/techsenger/tabshell/core/CoreComponentNames.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2024-2025 Pavel Castornii.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package com.techsenger.tabshell.core;
18 |
19 | import com.techsenger.patternfx.core.ComponentName;
20 |
21 | /**
22 | *
23 | * @author Pavel Castornii
24 | */
25 | public interface CoreComponentNames {
26 |
27 | ComponentName SHELL = new ComponentName("Shell");
28 |
29 | }
30 |
--------------------------------------------------------------------------------
/tabshell-core/src/main/java/com/techsenger/tabshell/core/dialog/DialogComponent.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2024-2025 Pavel Castornii.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package com.techsenger.tabshell.core.dialog;
18 |
19 | import com.techsenger.tabshell.core.area.AreaComponent;
20 |
21 | /**
22 | *
23 | * @author Pavel Castornii
24 | */
25 | public interface DialogComponent> extends AreaComponent {
26 |
27 | }
28 |
--------------------------------------------------------------------------------
/tabshell-core/src/main/java/com/techsenger/tabshell/core/page/AbstractPageHistory.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2024-2025 Pavel Castornii.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package com.techsenger.tabshell.core.page;
18 |
19 | import com.techsenger.tabshell.core.area.AbstractAreaHistory;
20 |
21 |
22 | /**
23 | *
24 | * @author Pavel Castornii
25 | */
26 | public abstract class AbstractPageHistory extends AbstractAreaHistory {
27 |
28 | }
29 |
--------------------------------------------------------------------------------
/tabshell-core/src/main/java/com/techsenger/tabshell/core/tab/ShellTabMediator.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2024-2025 Pavel Castornii.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package com.techsenger.tabshell.core.tab;
18 |
19 | import com.techsenger.tabshell.core.ShellViewModel;
20 |
21 | /**
22 | *
23 | * @author Pavel Castornii
24 | */
25 | public interface ShellTabMediator extends TabMediator {
26 |
27 | ShellViewModel> getShell();
28 | }
29 |
--------------------------------------------------------------------------------
/tabshell-dialogs/src/main/java/com/techsenger/tabshell/dialogs/page/PageDialogMediator.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2024-2025 Pavel Castornii.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package com.techsenger.tabshell.dialogs.page;
18 |
19 | import com.techsenger.tabshell.dialogs.simple.SimpleDialogMediator;
20 |
21 | /**
22 | *
23 | * @author Pavel Castornii
24 | */
25 | public interface PageDialogMediator extends SimpleDialogMediator {
26 |
27 | }
28 |
--------------------------------------------------------------------------------
/tabshell-layout/src/main/java/com/techsenger/tabshell/layout/workertab/WorkerTabMediator.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2024-2025 Pavel Castornii.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package com.techsenger.tabshell.layout.workertab;
18 |
19 | import com.techsenger.tabshell.layout.splittab.SplitTabMediator;
20 |
21 | /**
22 | *
23 | * @author Pavel Castornii
24 | */
25 | public interface WorkerTabMediator extends SplitTabMediator {
26 |
27 | }
28 |
--------------------------------------------------------------------------------
/tabshell-core/src/main/java/com/techsenger/tabshell/core/element/ElementComponent.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2024-2025 Pavel Castornii.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package com.techsenger.tabshell.core.element;
18 |
19 | import com.techsenger.patternfx.core.ChildComponent;
20 |
21 | /**
22 | *
23 | * @author Pavel Castornii
24 | */
25 | public interface ElementComponent> extends ChildComponent {
26 |
27 | }
28 |
--------------------------------------------------------------------------------
/tabshell-core/src/main/java/com/techsenger/tabshell/core/element/ElementViewModel.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2024-2025 Pavel Castornii.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package com.techsenger.tabshell.core.element;
18 |
19 | import com.techsenger.patternfx.core.ChildViewModel;
20 |
21 | /**
22 | *
23 | * @author Pavel Castornii
24 | */
25 | public interface ElementViewModel extends ChildViewModel {
26 |
27 | }
28 |
--------------------------------------------------------------------------------
/tabshell-core/src/main/java/com/techsenger/tabshell/core/tab/ShellTabView.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2024-2025 Pavel Castornii.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package com.techsenger.tabshell.core.tab;
18 |
19 | /**
20 | * This is the tab that is added to Shell.
21 | *
22 | * @author Pavel Castornii
23 | */
24 | public interface ShellTabView, S extends ShellTabComponent>> extends TabView {
25 |
26 | }
27 |
--------------------------------------------------------------------------------
/tabshell-core/src/main/resources/com/techsenger/tabshell/core/style/core-dracula.css:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2024-2025 Pavel Castornii.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | /*
18 | Author: Pavel Castornii
19 | */
20 |
21 | .stage-box .menu-item:focused {
22 | -fx-background-color: -color-accent-emphasis, -color-accent-emphasis;
23 | }
24 |
25 | .shadow {
26 | -fx-effect: dropshadow(three-pass-box, -color-shadow-default, 8px, 0.6, 0, 2);
27 | }
28 |
--------------------------------------------------------------------------------
/tabshell-dialogs/src/main/java/com/techsenger/tabshell/dialogs/alert/AlertDialogMediator.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2024-2025 Pavel Castornii.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package com.techsenger.tabshell.dialogs.alert;
18 |
19 | import com.techsenger.tabshell.dialogs.simple.SimpleDialogMediator;
20 |
21 | /**
22 | *
23 | * @author Pavel Castornii
24 | */
25 | public interface AlertDialogMediator extends SimpleDialogMediator {
26 |
27 | }
28 |
--------------------------------------------------------------------------------
/tabshell-material/src/main/resources/com/techsenger/tabshell/material/style/material-caspian.css:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2024-2025 Pavel Castornii.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | /*
18 | Author: Pavel Castornii
19 | */
20 |
21 | .root {
22 | -color-bg-default: #f0f0f0;
23 | -color-fg-default: #333333;
24 | -color-bg-extra: #d0d0d0;
25 | -color-border-muted: #444444;
26 | -color-base-9: #eeeeee;
27 | -color-base-4: #aaaaaa;
28 | }
--------------------------------------------------------------------------------
/tabshell-web/src/main/java/com/techsenger/tabshell/web/style/WebIcons.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2024-2025 Pavel Castornii.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package com.techsenger.tabshell.web.style;
18 |
19 | import com.techsenger.tabshell.material.icon.StyleFontIcon;
20 |
21 | /**
22 | *
23 | * @author Pavel Castornii
24 | */
25 | public interface WebIcons {
26 |
27 | StyleFontIcon WEB_BROWSER = new StyleFontIcon("web-browser-icon");
28 | }
29 |
--------------------------------------------------------------------------------
/tabshell-core/src/main/resources/com/techsenger/tabshell/core/style/core-cupertino-dark.css:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2024-2025 Pavel Castornii.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | /*
18 | Author: Pavel Castornii
19 | */
20 |
21 | .stage-box .menu-item:focused {
22 | -fx-background-color: -color-accent-emphasis, -color-accent-emphasis;
23 | }
24 |
25 | .shadow {
26 | -fx-effect: dropshadow(three-pass-box, -color-shadow-default, 8px, 0.6, 0, 2);
27 | }
28 |
--------------------------------------------------------------------------------
/tabshell-core/src/main/resources/com/techsenger/tabshell/core/style/core-cupertino-light.css:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2024-2025 Pavel Castornii.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | /*
18 | Author: Pavel Castornii
19 | */
20 |
21 | .stage-box .menu-item:focused {
22 | -fx-background-color: -color-accent-emphasis, -color-accent-emphasis;
23 | }
24 |
25 | .shadow {
26 | -fx-effect: dropshadow(three-pass-box, -color-shadow-default, 6px, 0.3, 0, 2);
27 | }
28 |
--------------------------------------------------------------------------------
/tabshell-dialogs/src/main/resources/com/techsenger/tabshell/dialogs/file/file-dialog.css:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2024-2025 Pavel Castornii.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | .table-view .table-row-cell {
18 | -fx-background-insets: 0, 0 0 0 0;
19 | }
20 |
21 | .combo-box.location .list-cell HBox{
22 | -fx-spacing: 0.25em;
23 | }
24 |
25 | .column-list-view .label {
26 | -fx-padding: 0 0 0 0.25em;
27 | -fx-graphic-text-gap: 0.5em;
28 | }
29 |
30 |
--------------------------------------------------------------------------------
/tabshell-material/src/main/java/com/techsenger/tabshell/material/Positioned.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2024-2025 Pavel Castornii.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package com.techsenger.tabshell.material;
18 |
19 | /**
20 | *
21 | * @author Pavel Castornii
22 | */
23 | public interface Positioned {
24 |
25 | /**
26 | * Returns the position this node/element requires.
27 | *
28 | * @return
29 | */
30 | int getPosition();
31 | }
32 |
--------------------------------------------------------------------------------
/tabshell-material/src/main/java/com/techsenger/tabshell/material/menu/MenuItemName.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2024-2025 Pavel Castornii.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package com.techsenger.tabshell.material.menu;
18 |
19 | import com.techsenger.patternfx.core.Name;
20 |
21 | /**
22 | *
23 | * @author Pavel Castornii
24 | */
25 | public class MenuItemName extends Name {
26 |
27 | public MenuItemName() {
28 | super(null);
29 | }
30 | }
31 |
--------------------------------------------------------------------------------
/tabshell-material/src/main/resources/com/techsenger/tabshell/material/style/material-modena.css:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2024-2025 Pavel Castornii.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | /*
18 | Author: Pavel Castornii
19 | */
20 |
21 | .root {
22 | -color-bg-default: #ffffff;
23 | -color-fg-default: #2a2a2a;
24 | -color-bg-extra: #dddddd;
25 | -color-border-muted: #444444;
26 | -color-base-9: #eeeeee;
27 | -color-base-4: #aaaaaa;
28 | }
29 |
--------------------------------------------------------------------------------
/tabshell-web/src/main/java/com/techsenger/tabshell/web/WebBrowserTabMediator.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2024-2025 Pavel Castornii.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package com.techsenger.tabshell.web;
18 |
19 | import com.techsenger.tabshell.core.tab.ShellTabMediator;
20 |
21 | /**
22 | *
23 | * @author Pavel Castornii
24 | */
25 | public interface WebBrowserTabMediator extends ShellTabMediator {
26 |
27 | WebToolBarViewModel getToolBar();
28 | }
29 |
--------------------------------------------------------------------------------
/tabshell-core/src/main/java/com/techsenger/tabshell/core/registry/ControlFactory.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2024-2025 Pavel Castornii.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package com.techsenger.tabshell.core.registry;
18 |
19 | import com.techsenger.patternfx.core.ComponentView;
20 |
21 | /**
22 | *
23 | * @author Pavel Castornii
24 | */
25 | @FunctionalInterface
26 | public interface ControlFactory {
27 |
28 | T create(ComponentView, ?> view);
29 | }
30 |
--------------------------------------------------------------------------------
/tabshell-text/src/main/java/com/techsenger/tabshell/text/editor/AbstractEditorTabHistory.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2024-2025 Pavel Castornii.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package com.techsenger.tabshell.text.editor;
18 |
19 | import com.techsenger.tabshell.text.viewer.AbstractViewerTabHistory;
20 |
21 | /**
22 | *
23 | * @author Pavel Castornii
24 | */
25 | public abstract class AbstractEditorTabHistory extends AbstractViewerTabHistory {
26 |
27 | }
28 |
--------------------------------------------------------------------------------
/tabshell-dialogs/src/main/java/com/techsenger/tabshell/dialogs/simple/AbstractSimpleDialogHistory.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2024-2025 Pavel Castornii.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package com.techsenger.tabshell.dialogs.simple;
18 |
19 | import com.techsenger.tabshell.core.dialog.AbstractDialogHistory;
20 |
21 | /**
22 | *
23 | * @author Pavel Castornii
24 | */
25 | public abstract class AbstractSimpleDialogHistory extends AbstractDialogHistory {
26 |
27 | }
28 |
--------------------------------------------------------------------------------
/tabshell-text/src/main/java/com/techsenger/tabshell/text/viewer/AbstractViewerTabHistory.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2024-2025 Pavel Castornii.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package com.techsenger.tabshell.text.viewer;
18 |
19 | import com.techsenger.tabshell.layout.workertab.AbstractWorkerTabHistory;
20 |
21 | /**
22 | *
23 | * @author Pavel Castornii
24 | */
25 | public abstract class AbstractViewerTabHistory extends AbstractWorkerTabHistory {
26 |
27 | }
28 |
--------------------------------------------------------------------------------
/tabshell-core/src/main/java/com/techsenger/tabshell/core/SelectableViewModel.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2024-2025 Pavel Castornii.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package com.techsenger.tabshell.core;
18 |
19 | import javafx.beans.property.ReadOnlyBooleanProperty;
20 |
21 | /**
22 | *
23 | * @author Pavel Castornii
24 | */
25 | public interface SelectableViewModel {
26 |
27 | ReadOnlyBooleanProperty selectedProperty();
28 |
29 | boolean isSelected();
30 | }
31 |
--------------------------------------------------------------------------------
/tabshell-demos/tabshell-demos-full/src/main/java/com/techsenger/tabshell/demos/full/text/TextEditorTabHistory.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2024-2025 Pavel Castornii.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package com.techsenger.tabshell.demos.full.text;
18 |
19 | import com.techsenger.tabshell.text.editor.AbstractEditorTabHistory;
20 |
21 | /**
22 | *
23 | * @author Pavel Castornii
24 | */
25 | public class TextEditorTabHistory extends AbstractEditorTabHistory {
26 |
27 | }
28 |
--------------------------------------------------------------------------------
/tabshell-layout/src/main/java/com/techsenger/tabshell/layout/workertab/AbstractWorkerTabHistory.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2024-2025 Pavel Castornii.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package com.techsenger.tabshell.layout.workertab;
18 |
19 | import com.techsenger.tabshell.layout.splittab.AbstractSplitTabHistory;
20 |
21 | /**
22 | *
23 | * @author Pavel Castornii
24 | */
25 | public abstract class AbstractWorkerTabHistory extends AbstractSplitTabHistory {
26 |
27 | }
28 |
--------------------------------------------------------------------------------
/tabshell-terminal/src/main/java/com/techsenger/tabshell/terminal/style/TerminalIcons.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2024-2025 Pavel Castornii.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package com.techsenger.tabshell.terminal.style;
18 |
19 | import com.techsenger.tabshell.material.icon.StyleFontIcon;
20 |
21 | /**
22 | *
23 | * @author Pavel Castornii
24 | */
25 | public interface TerminalIcons {
26 |
27 | StyleFontIcon TERMINAL = new StyleFontIcon("terminal-icon");
28 | }
29 |
--------------------------------------------------------------------------------
/tabshell-dialogs/src/main/java/com/techsenger/tabshell/dialogs/page/AbstractPageDialogHistory.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2024-2025 Pavel Castornii.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package com.techsenger.tabshell.dialogs.page;
18 |
19 | import com.techsenger.tabshell.dialogs.simple.AbstractSimpleDialogHistory;
20 |
21 | /**
22 | *
23 | * @author Pavel Castornii
24 | */
25 | public abstract class AbstractPageDialogHistory extends AbstractSimpleDialogHistory {
26 |
27 | }
28 |
--------------------------------------------------------------------------------
/tabshell-icons/src/main/resources/com/techsenger/tabshell/icons/text.css:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2024-2025 Pavel Castornii.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | /*
18 | Author: Pavel Castornii
19 | */
20 |
21 | @font-face {
22 | src: url('font/materialdesignicons-webfont.ttf');
23 | }
24 |
25 | .font-icon-view.wrap-icon {
26 | -fx-code-point: 984502; /* wrap */
27 | }
28 |
29 | .font-icon-view.editor-icon {
30 | -fx-code-point: 987624; /* file-edit-outline */
31 | }
32 |
--------------------------------------------------------------------------------
/tabshell-material/src/main/java/com/techsenger/tabshell/material/menu/MenuGroupName.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2024-2025 Pavel Castornii.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package com.techsenger.tabshell.material.menu;
18 |
19 | import com.techsenger.patternfx.core.Name;
20 |
21 | /**
22 | *
23 | * @author Pavel Castornii
24 | */
25 | public class MenuGroupName extends Name {
26 |
27 | public MenuGroupName(String text) {
28 | super(text);
29 | }
30 |
31 | }
32 |
--------------------------------------------------------------------------------
/tabshell-material/src/main/java/com/techsenger/tabshell/material/table/TreeTableColumnName.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2024-2025 Pavel Castornii.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package com.techsenger.tabshell.material.table;
18 |
19 | import com.techsenger.patternfx.core.Name;
20 |
21 | /**
22 | *
23 | * @author Pavel Castornii
24 | */
25 | public class TreeTableColumnName extends Name {
26 |
27 | public TreeTableColumnName() {
28 | super(null);
29 | }
30 | }
31 |
--------------------------------------------------------------------------------
/tabshell-material/src/main/java/com/techsenger/tabshell/material/textarea/TextAreaStyleName.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2024-2025 Pavel Castornii.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package com.techsenger.tabshell.material.textarea;
18 |
19 | import com.techsenger.patternfx.core.Name;
20 |
21 | /**
22 | *
23 | * @author Pavel Castornii
24 | */
25 | public class TextAreaStyleName extends Name {
26 |
27 | public TextAreaStyleName() {
28 | super(null);
29 | }
30 | }
31 |
--------------------------------------------------------------------------------
/tabshell-jfx/src/main/java/com/techsenger/tabshell/jfx/JfxTabDockMediator.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2024-2025 Pavel Castornii.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package com.techsenger.tabshell.jfx;
18 |
19 | import com.techsenger.tabshell.layout.dock.TabDockMediator;
20 | import devtoolsfx.connector.Connector;
21 |
22 | /**
23 | *
24 | * @author Pavel Castornii
25 | */
26 | public interface JfxTabDockMediator extends TabDockMediator {
27 |
28 | Connector getConnector();
29 | }
30 |
--------------------------------------------------------------------------------
/tabshell-material/src/main/java/com/techsenger/tabshell/material/Named.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2024-2025 Pavel Castornii.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package com.techsenger.tabshell.material;
18 |
19 | import com.techsenger.patternfx.core.Name;
20 |
21 | /**
22 | *
23 | * @author Pavel Castornii
24 | */
25 | public interface Named {
26 |
27 | /**
28 | * Returns the name of the node/element.
29 | *
30 | * @return
31 | */
32 | Name getName();
33 | }
34 |
--------------------------------------------------------------------------------
/tabshell-hex/src/main/java/com/techsenger/tabshell/hex/editor/HexAreaMediator.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2024-2025 Pavel Castornii.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package com.techsenger.tabshell.hex.editor;
18 |
19 | import com.techsenger.tabshell.core.area.AreaMediator;
20 |
21 | /**
22 | *
23 | * @author Pavel Castornii
24 | */
25 | public interface HexAreaMediator extends AreaMediator {
26 |
27 | HexToolBarViewModel getToolBar();
28 |
29 | CaretViewModel getCaret();
30 | }
31 |
--------------------------------------------------------------------------------
/tabshell-material/src/main/java/com/techsenger/tabshell/material/icon/Icon.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2024-2025 Pavel Castornii.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package com.techsenger.tabshell.material.icon;
18 |
19 | /**
20 | * All icons are immutable.
21 | *
22 | * @author Pavel Castornii
23 | */
24 | public interface Icon {
25 |
26 | /**
27 | * Returns the content this icon (image, codePoint, styleClass).
28 | *
29 | * @return
30 | */
31 | T getContent();
32 | }
33 |
--------------------------------------------------------------------------------
/tabshell-material/src/main/java/com/techsenger/tabshell/material/menu/NamedMenuItemState.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2024-2025 Pavel Castornii.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package com.techsenger.tabshell.material.menu;
18 |
19 | import javafx.scene.Node;
20 |
21 | /**
22 | *
23 | * @author Pavel Castornii
24 | */
25 | public interface NamedMenuItemState {
26 |
27 | String getText();
28 |
29 | Node getGraphic();
30 |
31 | boolean isVisible();
32 |
33 | boolean isDisabled();
34 | }
35 |
--------------------------------------------------------------------------------
/tabshell-text/src/main/java/com/techsenger/tabshell/text/viewer/FindPaneViewModel.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2024-2025 Pavel Castornii.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package com.techsenger.tabshell.text.viewer;
18 |
19 | /**
20 | *
21 | * @author Pavel Castornii
22 | */
23 | public interface FindPaneViewModel {
24 |
25 | void findNext();
26 |
27 | void findPrevious();
28 |
29 | boolean hasNextMatch();
30 |
31 | boolean hasPreviousMatch();
32 |
33 | void resetMatches();
34 | }
35 |
--------------------------------------------------------------------------------
/tabshell-material/src/main/java/com/techsenger/tabshell/material/icon/ImageIcon.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2024-2025 Pavel Castornii.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package com.techsenger.tabshell.material.icon;
18 |
19 | import javafx.scene.image.Image;
20 |
21 | /**
22 | *
23 | * @author Pavel Castornii
24 | */
25 | public final class ImageIcon extends AbstractIcon implements GenericImageIcon {
26 |
27 | public ImageIcon(Image content) {
28 | super(content);
29 | }
30 | }
31 |
--------------------------------------------------------------------------------
/tabshell-hex/src/main/java/com/techsenger/tabshell/hex/editor/EditorPanel.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2024-2025 Pavel Castornii.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package com.techsenger.tabshell.hex.editor;
18 |
19 | /**
20 | *
21 | * @author Pavel Castornii
22 | */
23 | public enum EditorPanel {
24 |
25 | HEX, ASCII;
26 |
27 | public EditorPanel opposite() {
28 | if (this == HEX) {
29 | return ASCII;
30 | } else {
31 | return HEX;
32 | }
33 | }
34 | }
35 |
--------------------------------------------------------------------------------
/tabshell-hex/src/main/java/com/techsenger/tabshell/hex/inspector/SizeProvider.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2024-2025 Pavel Castornii.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package com.techsenger.tabshell.hex.inspector;
18 |
19 | /**
20 | *
21 | * @author Pavel Castornii
22 | */
23 | @FunctionalInterface
24 | public interface SizeProvider {
25 |
26 | /**
27 | * Returns the size of the value in bits.
28 | *
29 | * @param values
30 | * @return
31 | */
32 | int provide(Values values);
33 | }
34 |
--------------------------------------------------------------------------------
/tabshell-text/src/main/java/com/techsenger/tabshell/text/style/TextIcons.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2024-2025 Pavel Castornii.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package com.techsenger.tabshell.text.style;
18 |
19 | import com.techsenger.tabshell.material.icon.StyleFontIcon;
20 |
21 | /**
22 | *
23 | * @author Pavel Castornii
24 | */
25 | public interface TextIcons {
26 |
27 | StyleFontIcon WRAP = new StyleFontIcon("wrap-icon");
28 |
29 | StyleFontIcon EDITOR = new StyleFontIcon("editor-icon");
30 | }
31 |
--------------------------------------------------------------------------------
/tabshell-core/src/main/java/com/techsenger/tabshell/core/ClosePreparationResult.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2024-2025 Pavel Castornii.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package com.techsenger.tabshell.core;
18 |
19 | /**
20 | *
21 | * @author Pavel Castornii
22 | */
23 | public enum ClosePreparationResult {
24 |
25 | /**
26 | * Preparation completed successfully.
27 | */
28 | SUCCESS,
29 |
30 | /**
31 | * Preparation was cancelled by user or system.
32 | */
33 | CANCELLED,
34 | }
35 |
--------------------------------------------------------------------------------
/tabshell-core/src/main/java/com/techsenger/tabshell/core/settings/xml/ThemeAdapter.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2024-2025 Pavel Castornii.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package com.techsenger.tabshell.core.settings.xml;
18 |
19 | import com.techsenger.tabshell.material.theme.AtlantaFxTheme;
20 |
21 | /**
22 | *
23 | * @author Pavel Castornii
24 | */
25 | public class ThemeAdapter extends EnumAdapter {
26 |
27 | public ThemeAdapter() {
28 | super(AtlantaFxTheme.class);
29 | }
30 | }
31 |
--------------------------------------------------------------------------------
/tabshell-terminal/src/main/java/com/techsenger/tabshell/terminal/TerminalTabMediator.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2024-2025 Pavel Castornii.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package com.techsenger.tabshell.terminal;
18 |
19 | import com.techsenger.tabshell.core.tab.ShellTabMediator;
20 |
21 | /**
22 | *
23 | * @author Pavel Castornii
24 | */
25 | public interface TerminalTabMediator extends ShellTabMediator {
26 |
27 | void addFindPane(FindPaneViewModel findViewModel);
28 |
29 | void removeFindPane();
30 | }
31 |
--------------------------------------------------------------------------------
/tabshell-web/src/main/java/com/techsenger/tabshell/web/WebComponentNames.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2024-2025 Pavel Castornii.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package com.techsenger.tabshell.web;
18 |
19 | import com.techsenger.patternfx.core.ComponentName;
20 |
21 | /**
22 | *
23 | * @author Pavel Castornii
24 | */
25 | public interface WebComponentNames {
26 |
27 | ComponentName WEB_BROWSER_TAB = new ComponentName("WebBrowserTab");
28 |
29 | ComponentName WEB_TOOL_BAR = new ComponentName("WebToolBar");
30 | }
31 |
--------------------------------------------------------------------------------
/tabshell-core/src/main/java/com/techsenger/tabshell/core/area/AreaView.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2024-2025 Pavel Castornii.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package com.techsenger.tabshell.core.area;
18 |
19 | import com.techsenger.patternfx.core.ChildView;
20 | import javafx.scene.layout.Region;
21 |
22 | /**
23 | *
24 | * @author Pavel Castornii
25 | */
26 | public interface AreaView, S extends AreaComponent>> extends ChildView {
27 |
28 | @Override
29 | Region getNode();
30 | }
31 |
--------------------------------------------------------------------------------
/tabshell-core/src/main/java/com/techsenger/tabshell/core/page/PageView.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2024-2025 Pavel Castornii.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package com.techsenger.tabshell.core.page;
18 |
19 | import com.techsenger.tabshell.core.SelectableView;
20 | import com.techsenger.tabshell.core.area.AreaView;
21 |
22 | /**
23 | *
24 | * @author Pavel Castornii
25 | */
26 | public interface PageView, S extends PageComponent>> extends AreaView,
27 | SelectableView {
28 |
29 | }
30 |
--------------------------------------------------------------------------------
/tabshell-material/src/main/java/com/techsenger/tabshell/material/icon/StyleFontIcon.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2024-2025 Pavel Castornii.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package com.techsenger.tabshell.material.icon;
18 |
19 | /**
20 | * This class uses style class as content.
21 | *
22 | * @author Pavel Castornii
23 | */
24 | public final class StyleFontIcon extends AbstractIcon implements GenericFontIcon {
25 |
26 | public StyleFontIcon(String content) {
27 | super(content);
28 | }
29 | }
30 |
--------------------------------------------------------------------------------
/tabshell-text/src/main/java/com/techsenger/tabshell/text/TextComponentNames.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2024-2025 Pavel Castornii.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package com.techsenger.tabshell.text;
18 |
19 | import com.techsenger.patternfx.core.ComponentName;
20 |
21 | /**
22 | *
23 | * @author Pavel Castornii
24 | */
25 | public interface TextComponentNames {
26 |
27 | ComponentName FIND_PANE = new ComponentName("FindPane");
28 |
29 | ComponentName GO_TO_LINE_DIALOG = new ComponentName("GoToLineDialog");
30 | }
31 |
--------------------------------------------------------------------------------
/tabshell-core/src/main/java/com/techsenger/tabshell/core/element/ElementView.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2024-2025 Pavel Castornii.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package com.techsenger.tabshell.core.element;
18 |
19 | import com.techsenger.patternfx.core.ChildView;
20 | import javafx.scene.Node;
21 |
22 | /**
23 | *
24 | * @author Pavel Castornii
25 | */
26 | public interface ElementView, S extends ElementComponent>> extends ChildView {
27 |
28 | @Override
29 | Node getNode();
30 | }
31 |
--------------------------------------------------------------------------------
/tabshell-demos/tabshell-demos-full/src/main/java/com/techsenger/tabshell/demos/full/dock/TextViewerViewModel.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2024-2025 Pavel Castornii.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package com.techsenger.tabshell.demos.full.dock;
18 |
19 | import com.techsenger.tabshell.core.area.AbstractAreaViewModel;
20 | import com.techsenger.tabshell.core.area.AreaMediator;
21 |
22 | /**
23 | *
24 | * @author Pavel Castornii
25 | */
26 | public class TextViewerViewModel extends AbstractAreaViewModel {
27 |
28 | }
29 |
--------------------------------------------------------------------------------
/tabshell-demos/tabshell-demos-full/src/main/java/com/techsenger/tabshell/demos/full/hex/DemoHexEditorTabMediator.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2024-2025 Pavel Castornii.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package com.techsenger.tabshell.demos.full.hex;
18 |
19 | import com.techsenger.tabshell.hex.editor.HexEditorTabMediator;
20 |
21 | /**
22 | *
23 | * @author Pavel Castornii
24 | */
25 | public interface DemoHexEditorTabMediator extends HexEditorTabMediator {
26 |
27 | @Override
28 | DemoHexToolBarViewModel getToolBar();
29 | }
30 |
--------------------------------------------------------------------------------
/tabshell-text/src/main/java/com/techsenger/tabshell/text/viewer/FindPaneView.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2024-2025 Pavel Castornii.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package com.techsenger.tabshell.text.viewer;
18 |
19 | /**
20 | *
21 | * @author Pavel Castornii
22 | */
23 | public interface FindPaneView {
24 |
25 | FindPaneViewModel getViewModel();
26 |
27 | void setSelectionToFindText();
28 |
29 | void selectNextRange(boolean focusToTextArea);
30 |
31 | void selectPreviousRange(boolean focusToTextArea);
32 | }
33 |
--------------------------------------------------------------------------------
/tabshell-core/src/main/java/com/techsenger/tabshell/core/dialog/DialogView.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2024-2025 Pavel Castornii.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package com.techsenger.tabshell.core.dialog;
18 |
19 | import com.techsenger.tabshell.core.area.AreaView;
20 | import javafx.scene.layout.VBox;
21 |
22 | /**
23 | *
24 | * @author Pavel Castornii
25 | */
26 | public interface DialogView, S extends DialogComponent>> extends AreaView {
27 |
28 | @Override
29 | VBox getNode();
30 | }
31 |
--------------------------------------------------------------------------------
/tabshell-material/src/main/java/com/techsenger/tabshell/material/icon/StyleImageIcon.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2024-2025 Pavel Castornii.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package com.techsenger.tabshell.material.icon;
18 |
19 | /**
20 | * This class uses style class as content.
21 | *
22 | * @author Pavel Castornii
23 | */
24 | public final class StyleImageIcon extends AbstractIcon implements GenericImageIcon {
25 |
26 | public StyleImageIcon(String content) {
27 | super(content);
28 | }
29 | }
30 |
31 |
--------------------------------------------------------------------------------
/tabshell-dialogs/src/main/java/com/techsenger/tabshell/dialogs/file/FileOperatorViewModel.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2024-2025 Pavel Castornii.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package com.techsenger.tabshell.dialogs.file;
18 |
19 | import com.techsenger.tabshell.storage.GenericFile;
20 |
21 | /**
22 | *
23 | * @author Pavel Castornii
24 | */
25 | public interface FileOperatorViewModel {
26 |
27 | GenericFile getFile();
28 |
29 | void setFile(GenericFile file);
30 |
31 | T getMediator();
32 | }
33 |
--------------------------------------------------------------------------------
/tabshell-storage/src/main/java/module-info.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2024-2025 Pavel Castornii.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | module com.techsenger.tabshell.storage {
18 | requires org.slf4j;
19 | requires com.techsenger.toolkit.core;
20 | requires com.techsenger.tabshell.material;
21 | requires com.techsenger.tabshell.core;
22 | requires javafx.controls;
23 | requires javafx.swing;
24 | requires com.sun.jna;
25 | requires com.sun.jna.platform;
26 |
27 | exports com.techsenger.tabshell.storage;
28 |
29 | }
30 |
--------------------------------------------------------------------------------
/tabshell-demos/tabshell-demos-core/src/main/java/com/techsenger/tabshell/demos/core/DemoComponentNames.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2024-2025 Pavel Castornii.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package com.techsenger.tabshell.demos.core;
18 |
19 | import com.techsenger.patternfx.core.ComponentName;
20 |
21 | /**
22 | *
23 | * @author Pavel Castornii
24 | */
25 | public interface DemoComponentNames {
26 |
27 | ComponentName DEMO_DIALOG = new ComponentName("DemoDialog");
28 |
29 | ComponentName DEMO_TAB = new ComponentName("DemoTab");
30 | }
31 |
--------------------------------------------------------------------------------
/tabshell-shared/src/main/resources/com/techsenger/tabshell/shared/find/find.css:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2024-2025 Pavel Castornii.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | /*
18 | Author: Pavel Castornii
19 | */
20 |
21 | GridPane.find {
22 | -fx-border-color: -color-border-muted;
23 | -fx-border-width: 1px 0 0 0;
24 | }
25 |
26 | .label.result {
27 | -fx-background-color: -color-bg-subtle, -color-bg-subtle;
28 | -fx-background-insets: 0, 1;
29 | -fx-text-fill: -color-fg-found;
30 | -fx-padding: 2 8 2 8;
31 | -fx-background-radius: 4;
32 | }
--------------------------------------------------------------------------------
/tabshell-terminal/src/main/java/com/techsenger/tabshell/terminal/TerminalComponentNames.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2024-2025 Pavel Castornii.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package com.techsenger.tabshell.terminal;
18 |
19 | import com.techsenger.patternfx.core.ComponentName;
20 |
21 | /**
22 | *
23 | * @author Pavel Castornii
24 | */
25 | public interface TerminalComponentNames {
26 |
27 | ComponentName TERMINAL_TAB = new ComponentName("TerminalTab");
28 |
29 | ComponentName FIND_PANE = new ComponentName("TerminalFindPane");
30 | }
31 |
--------------------------------------------------------------------------------
/tabshell-layout/src/main/java/com/techsenger/tabshell/layout/dock/DockConstants.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2024-2025 Pavel Castornii.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package com.techsenger.tabshell.layout.dock;
18 |
19 | /**
20 | *
21 | * @author Pavel Castornii
22 | */
23 | final class DockConstants {
24 |
25 | static final double ONE_THIRD = 1.0 / 3.0;
26 |
27 | static final double TWO_THIRDS = 2.0 / 3.0;
28 |
29 | static final double ONE_HALF = 1.0 / 2.0;
30 |
31 | private DockConstants() {
32 | // empty
33 | }
34 | }
35 |
--------------------------------------------------------------------------------
/tabshell-registrars/src/main/java/module-info.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2024-2025 Pavel Castornii.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | module com.techsenger.tabshell.registrars {
18 | requires org.slf4j;
19 | requires com.techsenger.patternfx.core;
20 | requires com.techsenger.tabshell.core;
21 | requires com.techsenger.tabshell.shared;
22 | requires com.techsenger.tabshell.material;
23 | requires com.techsenger.tabshell.text;
24 | requires javafx.controls;
25 |
26 | exports com.techsenger.tabshell.registrars;
27 |
28 | }
29 |
--------------------------------------------------------------------------------
/tabshell-layout/src/main/resources/com/techsenger/tabshell/layout/dock/tab-popup.css:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2024-2025 Pavel Castornii.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | /*
18 | Author: Pavel Castornii
19 | */
20 | .tab-popup {
21 | -fx-background-color: -color-bg-default;
22 | -fx-border-color: -color-border-muted;
23 | }
24 |
25 | .tab-popup.right {
26 | -fx-border-width: 0 0 0 1px;
27 | }
28 |
29 | .tab-popup.bottom {
30 | -fx-border-width: 1px 0 0 0;
31 | }
32 |
33 | .tab-popup.left {
34 | -fx-border-width: 0 1px 0 0;
35 | }
36 |
37 |
--------------------------------------------------------------------------------
/tabshell-material/src/main/java/com/techsenger/tabshell/material/table/TableColumnName.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2024-2025 Pavel Castornii.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package com.techsenger.tabshell.material.table;
18 |
19 | import com.techsenger.patternfx.core.Name;
20 |
21 | /**
22 | *
23 | * @author Pavel Castornii
24 | */
25 | public class TableColumnName extends Name {
26 |
27 | public TableColumnName() {
28 | super(null);
29 | }
30 |
31 | public TableColumnName(String text) {
32 | super(text);
33 | }
34 | }
35 |
--------------------------------------------------------------------------------
/tabshell-demos/tabshell-demos-full/src/main/java/com/techsenger/tabshell/demos/full/menu/DemoFileMenuNames.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2024-2025 Pavel Castornii.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package com.techsenger.tabshell.demos.full.menu;
18 |
19 | import com.techsenger.tabshell.shared.menu.FileMenuNames;
20 | import com.techsenger.tabshell.material.menu.MenuItemName;
21 |
22 | /**
23 | *
24 | * @author Pavel Castornii
25 | */
26 | public interface DemoFileMenuNames extends FileMenuNames {
27 |
28 | MenuItemName THEME = new MenuItemName();
29 |
30 | }
31 |
--------------------------------------------------------------------------------
/tabshell-jfx/src/main/java/com/techsenger/tabshell/jfx/inspector/PropertyDialogMediator.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2024-2025 Pavel Castornii.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package com.techsenger.tabshell.jfx.inspector;
18 |
19 | import com.techsenger.tabshell.dialogs.simple.SimpleDialogMediator;
20 | import com.techsenger.tabshell.web.WebBrowserTabViewModel;
21 |
22 | /**
23 | *
24 | * @author Pavel Castornii
25 | */
26 | public interface PropertyDialogMediator extends SimpleDialogMediator {
27 |
28 | void addBrowser(WebBrowserTabViewModel vm);
29 | }
30 |
--------------------------------------------------------------------------------
/tabshell-material/src/main/java/com/techsenger/tabshell/material/menu/MenuName.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2024-2025 Pavel Castornii.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package com.techsenger.tabshell.material.menu;
18 |
19 | import com.techsenger.patternfx.core.Name;
20 |
21 | /**
22 | * Although Menu extends MenuItem in JavaFX MenuName doesn't extend MenuItemName because name type must be unique.
23 | *
24 | * @author Pavel Castornii
25 | */
26 | public class MenuName extends Name {
27 |
28 | public MenuName() {
29 | super(null);
30 | }
31 | }
32 |
--------------------------------------------------------------------------------
/tabshell-material/src/main/java/com/techsenger/tabshell/material/icon/AbstractIcon.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2024-2025 Pavel Castornii.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package com.techsenger.tabshell.material.icon;
18 |
19 | /**
20 | *
21 | * @author Pavel Castornii
22 | */
23 | abstract class AbstractIcon implements Icon {
24 |
25 | private final T content;
26 |
27 | AbstractIcon(T content) {
28 | this.content = content;
29 | }
30 |
31 | @Override
32 | public T getContent() {
33 | return this.content;
34 | }
35 | }
36 |
--------------------------------------------------------------------------------
/tabshell-material/src/main/java/com/techsenger/tabshell/material/scrollbar/ShellScrollBarSkin.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2024-2025 Pavel Castornii.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package com.techsenger.tabshell.material.scrollbar;
18 |
19 | import javafx.scene.control.ScrollBar;
20 | import javafx.scene.control.skin.ScrollBarSkin;
21 |
22 | /**
23 | *
24 | * @author Pavel Castornii
25 | */
26 | public class ShellScrollBarSkin extends ScrollBarSkin {
27 |
28 | public ShellScrollBarSkin(ScrollBar sb) {
29 | super(sb);
30 | }
31 |
32 |
33 |
34 | }
35 |
--------------------------------------------------------------------------------
/tabshell-text/src/main/java/com/techsenger/tabshell/text/viewer/FindMatchesResetPolicy.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2024-2025 Pavel Castornii.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package com.techsenger.tabshell.text.viewer;
18 |
19 | /**
20 | *
21 | * @author Pavel Castornii
22 | */
23 | public enum FindMatchesResetPolicy {
24 |
25 | /**
26 | * With this policy it is necessary to call method to reset matches.
27 | */
28 | MANUAL,
29 |
30 | /**
31 | * With this policy matches are reset automatically.
32 | */
33 | AUTOMATIC;
34 |
35 | }
36 |
--------------------------------------------------------------------------------
/tabshell-demos/tabshell-demos-core/src/main/java/com/techsenger/tabshell/demos/core/tab/DemoTabMediator.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2024-2025 Pavel Castornii.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package com.techsenger.tabshell.demos.core.tab;
18 |
19 | import com.techsenger.tabshell.core.tab.ShellTabMediator;
20 | import com.techsenger.tabshell.demos.core.dialog.DemoDialogViewModel;
21 |
22 | /**
23 | *
24 | * @author Pavel Castornii
25 | */
26 | public interface DemoTabMediator extends ShellTabMediator {
27 |
28 | void addDemoDialog(DemoDialogViewModel dialog);
29 | }
30 |
--------------------------------------------------------------------------------
/tabshell-icons/src/main/resources/com/techsenger/tabshell/icons/font/materialdesignicons-license.txt:
--------------------------------------------------------------------------------
1 | Pictogrammers Free License
2 | --------------------------
3 |
4 | This icon collection is released as free, open source, and GPL friendly by
5 | the [Pictogrammers](http://pictogrammers.com/) icon group. You may use it
6 | for commercial projects, open source projects, or anything really.
7 |
8 | # Icons: Apache 2.0 (https://www.apache.org/licenses/LICENSE-2.0)
9 | Some of the icons are redistributed under the Apache 2.0 license. All other
10 | icons are either redistributed under their respective licenses or are
11 | distributed under the Apache 2.0 license.
12 |
13 | # Fonts: Apache 2.0 (https://www.apache.org/licenses/LICENSE-2.0)
14 | All web and desktop fonts are distributed under the Apache 2.0 license. Web
15 | and desktop fonts contain some icons that are redistributed under the Apache
16 | 2.0 license. All other icons are either redistributed under their respective
17 | licenses or are distributed under the Apache 2.0 license.
18 |
19 | # Code: MIT (https://opensource.org/licenses/MIT)
20 | The MIT license applies to all non-font and non-icon files.
21 |
--------------------------------------------------------------------------------
/tabshell-material/src/main/java/com/techsenger/tabshell/material/icon/FontIcon.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2024-2025 Pavel Castornii.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package com.techsenger.tabshell.material.icon;
18 |
19 | /**
20 | * Font icon has either a codePoint or styleClass. This icon will be displayed in {@link FontIconView}.
21 | *
22 | * @author Pavel Castornii
23 | */
24 | public final class FontIcon extends AbstractIcon implements GenericFontIcon {
25 |
26 | public FontIcon(Integer content) {
27 | super(content);
28 | }
29 | }
30 |
--------------------------------------------------------------------------------
/tabshell-core/src/main/java/com/techsenger/tabshell/core/settings/ViewerSettings.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2024-2025 Pavel Castornii.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package com.techsenger.tabshell.core.settings;
18 |
19 | import javafx.beans.property.ObjectProperty;
20 | import javafx.scene.text.Font;
21 |
22 | /**
23 | *
24 | * @author Pavel Castornii
25 | */
26 | public interface ViewerSettings {
27 |
28 | ObjectProperty fontProperty();
29 |
30 | Font getFont();
31 |
32 | void setFont(Font font);
33 |
34 | TabSymbolSettings getTabSymbol();
35 | }
36 |
--------------------------------------------------------------------------------
/tabshell-core/src/main/java/com/techsenger/tabshell/core/tab/ShellTabComponent.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2024-2025 Pavel Castornii.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package com.techsenger.tabshell.core.tab;
18 |
19 | import com.techsenger.tabshell.core.ShellComponent;
20 | import com.techsenger.tabshell.core.dialog.DialogContainerComponent;
21 |
22 | /**
23 | *
24 | * @author Pavel Castornii
25 | */
26 | public interface ShellTabComponent> extends TabComponent, DialogContainerComponent {
27 |
28 | ShellComponent> getShell();
29 | }
30 |
--------------------------------------------------------------------------------
/tabshell-dialogs/src/main/java/com/techsenger/tabshell/dialogs/file/FileChooserDialogMediator.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2024-2025 Pavel Castornii.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package com.techsenger.tabshell.dialogs.file;
18 |
19 | import com.techsenger.tabshell.dialogs.alert.AlertDialogViewModel;
20 | import com.techsenger.tabshell.dialogs.simple.SimpleDialogMediator;
21 |
22 | /**
23 | *
24 | * @author Pavel Castornii
25 | */
26 | public interface FileChooserDialogMediator extends SimpleDialogMediator {
27 |
28 | void addAlertDialog(AlertDialogViewModel vm);
29 | }
30 |
--------------------------------------------------------------------------------
/tabshell-hex/src/main/java/com/techsenger/tabshell/hex/editor/NumberBase.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2024-2025 Pavel Castornii.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package com.techsenger.tabshell.hex.editor;
18 |
19 | /**
20 | *
21 | * @author Pavel Castornii
22 | */
23 | public enum NumberBase {
24 |
25 | HEX(16),
26 |
27 | DEC(10),
28 |
29 | OCT(8),
30 |
31 | BIN(2);
32 |
33 | private int value;
34 |
35 | NumberBase(int value) {
36 | this.value = value;
37 | }
38 |
39 | int getValue() {
40 | return this.value;
41 | }
42 | }
43 |
--------------------------------------------------------------------------------
/tabshell-material/src/main/java/com/techsenger/tabshell/material/theme/DefaultThemePalette16.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2024-2025 Pavel Castornii.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package com.techsenger.tabshell.material.theme;
18 |
19 | /**
20 | *
21 | * @author Pavel Castornii
22 | */
23 | class DefaultThemePalette16 implements ThemePalette16 {
24 |
25 | private int[] colors;
26 |
27 | DefaultThemePalette16(int[] colors) {
28 | this.colors = colors;
29 | }
30 |
31 | @Override
32 | public int[] getColors() {
33 | return colors;
34 | }
35 | }
36 |
--------------------------------------------------------------------------------
/tabshell-jfx/src/main/java/com/techsenger/tabshell/jfx/inspector/JfxInspectorTabMediator.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2024-2025 Pavel Castornii.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package com.techsenger.tabshell.jfx.inspector;
18 |
19 | import com.techsenger.tabshell.core.tab.ShellTabViewModel;
20 | import com.techsenger.tabshell.core.tab.TabMediator;
21 |
22 | /**
23 | *
24 | * @author Pavel Castornii
25 | */
26 | public interface JfxInspectorTabMediator extends TabMediator {
27 |
28 | void addPropertyDialog(PropertyDialogViewModel vm);
29 |
30 | ShellTabViewModel getShellTab();
31 | }
32 |
--------------------------------------------------------------------------------
/tabshell-storage/src/main/java/com/techsenger/tabshell/storage/FileTaskProvider.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2024-2025 Pavel Castornii.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package com.techsenger.tabshell.storage;
18 |
19 | import com.techsenger.tabshell.core.tab.TabWorker;
20 |
21 | /**
22 | * Interface that allows to use files from different storage - local, samba, ftp etc.
23 | *
24 | * @author Pavel Castornii
25 | */
26 | public interface FileTaskProvider {
27 |
28 | TabWorker createFileReader(GenericFile file);
29 |
30 | TabWorker createFileWriter(GenericFile fileInfo, T content);
31 | }
32 |
--------------------------------------------------------------------------------
/tabshell-hex/src/main/java/com/techsenger/tabshell/hex/style/HexIcons.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2024-2025 Pavel Castornii.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package com.techsenger.tabshell.hex.style;
18 |
19 | import com.techsenger.tabshell.material.icon.StyleFontIcon;
20 |
21 | /**
22 | *
23 | * @author Pavel Castornii
24 | */
25 | public interface HexIcons {
26 |
27 | StyleFontIcon EDITOR = new StyleFontIcon("hex-editor-icon");
28 |
29 | StyleFontIcon COLUMNS_ENABLED = new StyleFontIcon("columns-enabled-icon");
30 |
31 | StyleFontIcon DATA_INSPECTOR = new StyleFontIcon("data-inspector-icon");
32 | }
33 |
--------------------------------------------------------------------------------
/tabshell-core/src/main/java/com/techsenger/tabshell/core/SelectableView.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2024-2025 Pavel Castornii.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package com.techsenger.tabshell.core;
18 |
19 | /**
20 | *
21 | * @author Pavel Castornii
22 | */
23 | public interface SelectableView {
24 |
25 | /**
26 | * Called when the component is selected (also called when a new component is created even if there are no
27 | * other ones).
28 | */
29 | void doOnSelected();
30 |
31 | /**
32 | * Called when the component is deselected.
33 | */
34 | void doOnDeselected();
35 |
36 | }
37 |
--------------------------------------------------------------------------------
/tabshell-demos/tabshell-demos-full/src/main/java/com/techsenger/tabshell/demos/full/hex/DemoHexEditorTabView.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2024-2025 Pavel Castornii.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package com.techsenger.tabshell.demos.full.hex;
18 |
19 | import com.techsenger.tabshell.hex.editor.HexEditorTabView;
20 |
21 | /**
22 | *
23 | * @author Pavel Castornii
24 | */
25 | public class DemoHexEditorTabView extends HexEditorTabView {
26 |
27 | public DemoHexEditorTabView(DemoHexEditorTabViewModel viewModel) {
28 | super(viewModel);
29 | }
30 | }
31 |
--------------------------------------------------------------------------------
/tabshell-icons/src/main/resources/com/techsenger/tabshell/icons/hex.css:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2024-2025 Pavel Castornii.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | /*
18 | Author: Pavel Castornii
19 | */
20 |
21 | @font-face {
22 | src: url('font/materialdesignicons-webfont.ttf');
23 | }
24 |
25 | .font-icon-view.hex-editor-icon {
26 | -fx-code-point: 987815; /* hexadecimal */
27 | }
28 |
29 | .font-icon-view.columns-enabled-icon {
30 | -fx-code-point: 985311; /* format-columns */
31 | }
32 |
33 | .font-icon-view.data-inspector-icon {
34 | -fx-code-point: 989337; /* account-tie-hat-outline */
35 | }
36 |
37 |
38 |
--------------------------------------------------------------------------------
/tabshell-material/src/main/java/com/techsenger/tabshell/material/menu/NamedMenuUpdate.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2024-2025 Pavel Castornii.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package com.techsenger.tabshell.material.menu;
18 |
19 | /**
20 | *
21 | * @author Pavel Castornii
22 | */
23 | public final class NamedMenuUpdate extends NamedMenuItemUpdate {
24 |
25 | public static class Builder extends AbstractChangeBuilder {
26 |
27 | public Builder() {
28 | super(new NamedMenuUpdate());
29 | }
30 | }
31 |
32 | private NamedMenuUpdate() {
33 |
34 | }
35 | }
36 |
--------------------------------------------------------------------------------
/tabshell-dialogs/src/main/java/com/techsenger/tabshell/dialogs/DialogComponentNames.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2024-2025 Pavel Castornii.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package com.techsenger.tabshell.dialogs;
18 |
19 | import com.techsenger.patternfx.core.ComponentName;
20 |
21 | /**
22 | *
23 | * @author Pavel Castornii
24 | */
25 | public interface DialogComponentNames {
26 |
27 | ComponentName ALERT_DIALOG = new ComponentName("AlertDialog");
28 |
29 | ComponentName YES_NO_DIALOG = new ComponentName("YesNoDialog");
30 |
31 | ComponentName FILE_CHOOSER_DIALOG = new ComponentName("FileChooserDialog");
32 | }
33 |
--------------------------------------------------------------------------------
/tabshell-material/src/main/java/com/techsenger/tabshell/material/button/ToggleButtonHistory.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2024-2025 Pavel Castornii.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package com.techsenger.tabshell.material.button;
18 |
19 | import java.io.Serializable;
20 |
21 | /**
22 | *
23 | * @author Pavel Castornii
24 | */
25 | public class ToggleButtonHistory implements Serializable {
26 |
27 | private boolean selected;
28 |
29 | public boolean isSelected() {
30 | return selected;
31 | }
32 |
33 | public void setSelected(boolean selected) {
34 | this.selected = selected;
35 | }
36 | }
37 |
--------------------------------------------------------------------------------
/tabshell-material/src/main/java/com/techsenger/tabshell/material/style/SizeConstants.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2024-2025 Pavel Castornii.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package com.techsenger.tabshell.material.style;
18 |
19 | /**
20 | *
21 | * @author Pavel Castornii
22 | */
23 | public final class SizeConstants {
24 |
25 | public static final double INSET = 12.0;
26 |
27 | public static final double HALF_INSET = 6.0;
28 |
29 | public static final double THIRD_INSET = 4.0;
30 |
31 | public static final double SIXTH_INSET = 2.0;
32 |
33 | private SizeConstants() {
34 | //empty
35 | }
36 | }
37 |
--------------------------------------------------------------------------------
/tabshell-layout/src/main/java/com/techsenger/tabshell/layout/dock/SideBarMediator.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2024-2025 Pavel Castornii.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package com.techsenger.tabshell.layout.dock;
18 |
19 | import com.techsenger.tabshell.core.area.AreaMediator;
20 | import javafx.collections.ObservableList;
21 |
22 | /**
23 | *
24 | * @author Pavel Castornii
25 | */
26 | public interface SideBarMediator extends AreaMediator {
27 |
28 | /**
29 | * Returns an unmodifiable list of minimized tab docks.
30 | *
31 | * @return
32 | */
33 | ObservableList extends TabDockViewModel>> getTabDocks();
34 | }
35 |
--------------------------------------------------------------------------------
/tabshell-core/src/main/java/com/techsenger/tabshell/core/area/AreaViewModel.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2024-2025 Pavel Castornii.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package com.techsenger.tabshell.core.area;
18 |
19 | import com.techsenger.patternfx.core.ChildViewModel;
20 | import javafx.beans.property.ReadOnlyDoubleProperty;
21 |
22 | /**
23 | *
24 | * @author Pavel Castornii
25 | */
26 | public interface AreaViewModel extends ChildViewModel {
27 |
28 | ReadOnlyDoubleProperty widthProperty();
29 |
30 | double getWidth();
31 |
32 | ReadOnlyDoubleProperty heightProperty();
33 |
34 | double getHeight();
35 | }
36 |
--------------------------------------------------------------------------------
/tabshell-layout/src/main/java/com/techsenger/tabshell/layout/dock/SideBarHistory.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2024-2025 Pavel Castornii.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package com.techsenger.tabshell.layout.dock;
18 |
19 | import com.techsenger.tabshell.core.area.AbstractAreaHistory;
20 |
21 | /**
22 | *
23 | * @author Pavel Castornii
24 | */
25 | public class SideBarHistory extends AbstractAreaHistory {
26 |
27 | private TabPopupHistory popup;
28 |
29 | public TabPopupHistory getOrCreatePopup() {
30 | if (this.popup == null) {
31 | this.popup = new TabPopupHistory();
32 | }
33 | return popup;
34 | }
35 | }
36 |
--------------------------------------------------------------------------------
/tabshell-hex/src/main/java/com/techsenger/tabshell/hex/editor/HexEditorTabHistory.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2024-2025 Pavel Castornii.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package com.techsenger.tabshell.hex.editor;
18 |
19 | import com.techsenger.tabshell.core.tab.AbstractShellTabHistory;
20 | import com.techsenger.tabshell.layout.dock.DockLayoutHistory;
21 |
22 | /**
23 | *
24 | * @author Pavel Castornii
25 | */
26 | public class HexEditorTabHistory extends AbstractShellTabHistory {
27 |
28 | private DockLayoutHistory dockLayout = new DockLayoutHistory();
29 |
30 | public DockLayoutHistory getDockLayout() {
31 | return dockLayout;
32 | }
33 | }
34 |
--------------------------------------------------------------------------------
/tabshell-storage/src/main/java/com/techsenger/tabshell/storage/FileColumnNames.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2024-2025 Pavel Castornii.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package com.techsenger.tabshell.storage;
18 |
19 | import com.techsenger.tabshell.material.table.TableColumnName;
20 |
21 | /**
22 | *
23 | * @author Pavel Castornii
24 | */
25 | public interface FileColumnNames {
26 |
27 | TableColumnName TYPE = new TableColumnName("Type");
28 |
29 | TableColumnName NAME = new TableColumnName("Name");
30 |
31 | TableColumnName SIZE = new TableColumnName("Size");
32 |
33 | TableColumnName LAST_MODIFIED = new TableColumnName("Last Modified");
34 | }
35 |
--------------------------------------------------------------------------------
/tabshell-core/src/main/java/com/techsenger/tabshell/core/page/PageViewModel.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2024-2025 Pavel Castornii.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package com.techsenger.tabshell.core.page;
18 |
19 | import com.techsenger.tabshell.core.IconedViewModel;
20 | import com.techsenger.tabshell.core.SelectableViewModel;
21 | import com.techsenger.tabshell.core.TitledViewModel;
22 | import com.techsenger.tabshell.core.area.AreaViewModel;
23 |
24 | /**
25 | *
26 | * @author Pavel Castornii
27 | */
28 | public interface PageViewModel extends AreaViewModel, TitledViewModel, IconedViewModel,
29 | SelectableViewModel {
30 |
31 | }
32 |
--------------------------------------------------------------------------------
/tabshell-storage/src/main/java/com/techsenger/tabshell/storage/UnixFileStorage.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2024-2025 Pavel Castornii.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package com.techsenger.tabshell.storage;
18 |
19 | import java.net.URI;
20 |
21 | /**
22 | *
23 | * @author Pavel Castornii
24 | */
25 | public class UnixFileStorage extends AbstractDefaultFileStorage {
26 |
27 | public UnixFileStorage(FileStorageType type, String displayName, URI rootUri) {
28 | super(type, displayName, rootUri);
29 | }
30 |
31 | @Override
32 | public boolean refersToStorage(URI uri) {
33 | return "file".equalsIgnoreCase(uri.getScheme());
34 | }
35 | }
36 |
--------------------------------------------------------------------------------
/tabshell-core/src/main/java/com/techsenger/tabshell/core/settings/TabSymbolSettings.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2024-2025 Pavel Castornii.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package com.techsenger.tabshell.core.settings;
18 |
19 | import javafx.beans.property.BooleanProperty;
20 | import javafx.beans.property.IntegerProperty;
21 |
22 | /**
23 | *
24 | * @author Pavel Castornii
25 | */
26 | public interface TabSymbolSettings {
27 |
28 | IntegerProperty sizeProperty();
29 |
30 | int getSize();
31 |
32 | void setSize(int size);
33 |
34 | BooleanProperty useSpacesProperty();
35 |
36 | boolean isUseSpaces();
37 |
38 | void setUseSpaces(boolean useSpaces);
39 | }
40 |
--------------------------------------------------------------------------------
/tabshell-jfx/src/main/java/com/techsenger/tabshell/jfx/JfxComponentNames.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2024-2025 Pavel Castornii.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package com.techsenger.tabshell.jfx;
18 |
19 | import com.techsenger.patternfx.core.ComponentName;
20 |
21 | /**
22 | *
23 | * @author Pavel Castornii
24 | */
25 | public interface JfxComponentNames {
26 |
27 | ComponentName JFX_TAB_DOCK = new ComponentName("JFXTabDock");
28 |
29 | ComponentName JFX_INSPECTOR_TAB = new ComponentName("JFXInspectorTab");
30 |
31 | ComponentName EVENT_LOG_TAB = new ComponentName("EventLogTab");
32 |
33 | ComponentName PROPERTY_DIALOG = new ComponentName("PropertyDialog");
34 | }
35 |
--------------------------------------------------------------------------------
/tabshell-core/src/main/java/com/techsenger/tabshell/core/dialog/DialogManager.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2024-2025 Pavel Castornii.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package com.techsenger.tabshell.core.dialog;
18 |
19 | import java.util.List;
20 |
21 | /**
22 | *
23 | * @author Pavel Castornii
24 | */
25 | public interface DialogManager {
26 |
27 | void showDialog(DialogView, ?> dialogView);
28 |
29 | void hideDialog(DialogView, ?> dialogView);
30 |
31 | /**
32 | * Returns an unmodifiable list of dialogs.
33 | *
34 | * @return the list of dialogs. If no dialogs are present, an empty list is returned.
35 | */
36 | List> getDialogs();
37 | }
38 |
--------------------------------------------------------------------------------
/tabshell-demos/tabshell-demos-full/src/main/java/com/techsenger/tabshell/demos/full/dock/DockLayoutTabHistory.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2024-2025 Pavel Castornii.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package com.techsenger.tabshell.demos.full.dock;
18 |
19 | import com.techsenger.tabshell.core.tab.AbstractShellTabHistory;
20 | import com.techsenger.tabshell.layout.dock.DockLayoutHistory;
21 |
22 | /**
23 | *
24 | * @author Pavel Castornii
25 | */
26 | public class DockLayoutTabHistory extends AbstractShellTabHistory {
27 |
28 | private DockLayoutHistory dockLayout = new DockLayoutHistory();
29 |
30 | public DockLayoutHistory getDockLayout() {
31 | return dockLayout;
32 | }
33 | }
34 |
--------------------------------------------------------------------------------
/tabshell-layout/src/main/java/com/techsenger/tabshell/layout/dock/TabPopupMediator.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2024-2025 Pavel Castornii.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package com.techsenger.tabshell.layout.dock;
18 |
19 | import com.techsenger.tabshell.core.area.AreaMediator;
20 | import com.techsenger.tabshell.core.tab.TabViewModel;
21 | import java.util.List;
22 |
23 | /**
24 | *
25 | * @author Pavel Castornii
26 | */
27 | public interface TabPopupMediator extends AreaMediator {
28 |
29 | /**
30 | * Returns un unmodifiable list of tabs. A list instance is created on each method call.
31 | *
32 | * @return
33 | */
34 | List extends TabViewModel> getTabs();
35 | }
36 |
--------------------------------------------------------------------------------
/tabshell-core/src/main/java/com/techsenger/tabshell/core/tab/TabView.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2024-2025 Pavel Castornii.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package com.techsenger.tabshell.core.tab;
18 |
19 | import com.techsenger.patternfx.core.ChildView;
20 | import com.techsenger.tabshell.core.SelectableView;
21 | import com.techsenger.tabshell.core.menu.MenuAware;
22 |
23 | /**
24 | * A view for components that has a root with JavaFX Tab class.
25 | *
26 | * @author Pavel Castornii
27 | */
28 | public interface TabView, S extends TabComponent>> extends ChildView,
29 | SelectableView, MenuAware {
30 |
31 | @Override
32 | ComponentTab getNode();
33 | }
34 |
--------------------------------------------------------------------------------
/tabshell-core/src/main/java/com/techsenger/tabshell/core/ShellComponent.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2024-2025 Pavel Castornii.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package com.techsenger.tabshell.core;
18 |
19 | import com.techsenger.patternfx.core.ParentComponent;
20 | import com.techsenger.tabshell.core.dialog.DialogContainerComponent;
21 | import com.techsenger.tabshell.core.tab.ShellTabComponent;
22 | import com.techsenger.tabshell.core.tab.TabContainerComponent;
23 |
24 | /**
25 | *
26 | * @author Pavel Castornii
27 | */
28 | public interface ShellComponent> extends ParentComponent,
29 | TabContainerComponent>, DialogContainerComponent {
30 |
31 | }
32 |
--------------------------------------------------------------------------------
/tabshell-dialogs/src/main/java/com/techsenger/tabshell/dialogs/page/AbstractPageDialogViewModel.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2024-2025 Pavel Castornii.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package com.techsenger.tabshell.dialogs.page;
18 |
19 | import com.techsenger.tabshell.core.dialog.DialogScope;
20 | import com.techsenger.tabshell.dialogs.simple.AbstractSimpleDialogViewModel;
21 |
22 | /**
23 | *
24 | * @author Pavel Castornii
25 | */
26 | public abstract class AbstractPageDialogViewModel
27 | extends AbstractSimpleDialogViewModel {
28 |
29 | public AbstractPageDialogViewModel(DialogScope scope, boolean resizable) {
30 | super(scope, resizable);
31 | }
32 | }
33 |
--------------------------------------------------------------------------------
/tabshell-terminal/src/main/java/com/techsenger/tabshell/terminal/TerminalTabHistory.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2024-2025 Pavel Castornii.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package com.techsenger.tabshell.terminal;
18 |
19 | import com.techsenger.tabshell.core.tab.AbstractShellTabHistory;
20 |
21 | /**
22 | *
23 | * @author Pavel Castornii
24 | */
25 | public class TerminalTabHistory extends AbstractShellTabHistory {
26 |
27 | private TerminalPaletteType paletteType;
28 |
29 | public TerminalPaletteType getPaletteType() {
30 | return paletteType;
31 | }
32 |
33 | public void setPaletteType(TerminalPaletteType paletteType) {
34 | this.paletteType = paletteType;
35 | }
36 | }
37 |
--------------------------------------------------------------------------------
/tabshell-text/src/main/resources/com/techsenger/tabshell/text/editor/editor.css:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2024-2025 Pavel Castornii.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | /*
18 | Author: Pavel Castornii
19 | */
20 |
21 | /* Current line */
22 | .styled-text-area.editor .paragraph-box:has-caret {
23 | /*when theme is dark then `derive(-color-bg-default, +8%)` when is light then `derive(-color-bg-default, -5%)` */
24 | -fx-background-color: ladder(-color-bg-default, derive(-color-bg-default, +8%) 49%, derive(-color-bg-default, -5%) 50%);
25 | }
26 |
27 | /* It is necessary to set min width to avoid label moving on its value change */
28 | .status-bar .overwrite-mode-box {
29 | -fx-min-width: 2.5em;
30 | -fx-padding: 0;
31 | }
--------------------------------------------------------------------------------
/tabshell-demos/tabshell-demos-full/src/main/java/com/techsenger/tabshell/demos/full/dialogs/DialogItem.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2024-2025 Pavel Castornii.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package com.techsenger.tabshell.demos.full.dialogs;
18 |
19 | /**
20 | *
21 | * @author Pavel Castornii
22 | */
23 | class DialogItem {
24 |
25 | private final Dialog dialog;
26 |
27 | private final Runnable runnable;
28 |
29 | DialogItem(Dialog dialog, Runnable runnable) {
30 | this.dialog = dialog;
31 | this.runnable = runnable;
32 | }
33 |
34 | public Dialog getDialog() {
35 | return dialog;
36 | }
37 |
38 | public Runnable getRunnable() {
39 | return runnable;
40 | }
41 | }
42 |
--------------------------------------------------------------------------------
/tabshell-core/src/main/java/com/techsenger/tabshell/core/tab/ShellTabViewModel.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2024-2025 Pavel Castornii.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package com.techsenger.tabshell.core.tab;
18 |
19 | import javafx.beans.property.ReadOnlyIntegerProperty;
20 |
21 | /**
22 | *
23 | * @author Pavel Castornii
24 | */
25 | public interface ShellTabViewModel extends TabViewModel {
26 |
27 | /**
28 | * Property that shows the count of open dialogs.
29 | *
30 | * @return
31 | */
32 | ReadOnlyIntegerProperty dialogCountProperty();
33 |
34 | /**
35 | * Returns the count of open dialogs.
36 | *
37 | * @return
38 | */
39 | int getDialogCount();
40 | }
41 |
--------------------------------------------------------------------------------
/tabshell-demos/tabshell-demos-core/src/main/java/module-info.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2024-2025 Pavel Castornii.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | module com.techsenger.tabshell.demos.core {
18 | requires com.techsenger.toolkit.core;
19 | requires com.techsenger.toolkit.fx;
20 | requires com.techsenger.tabshell.core;
21 | requires com.techsenger.tabshell.material;
22 | requires com.techsenger.patternfx.core;
23 |
24 | requires org.slf4j;
25 | requires javafx.base;
26 | requires javafx.graphics;
27 | requires javafx.controls;
28 |
29 | exports com.techsenger.tabshell.demos.core.history;
30 | exports com.techsenger.tabshell.demos.core.settings;
31 |
32 | opens com.techsenger.tabshell.demos.core;
33 | }
34 |
--------------------------------------------------------------------------------
/tabshell-material/src/main/java/com/techsenger/tabshell/material/theme/ThemeStringConverter.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2024-2025 Pavel Castornii.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package com.techsenger.tabshell.material.theme;
18 |
19 | import javafx.util.StringConverter;
20 |
21 | /**
22 | *
23 | * @author Pavel Castornii
24 | */
25 | public class ThemeStringConverter extends StringConverter {
26 |
27 | @Override
28 | public String toString(Theme t) {
29 | if (t != null) {
30 | return t.getName();
31 | } else {
32 | return null;
33 | }
34 | }
35 |
36 | @Override
37 | public Theme fromString(String string) {
38 | throw new IllegalStateException();
39 | }
40 | }
41 |
--------------------------------------------------------------------------------
/tabshell-core/src/main/java/com/techsenger/tabshell/core/element/AbstractElementViewModel.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2024-2025 Pavel Castornii.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package com.techsenger.tabshell.core.element;
18 |
19 | import com.techsenger.patternfx.core.AbstractChildViewModel;
20 |
21 | /**
22 | *
23 | * @author Pavel Castornii
24 | */
25 | public abstract class AbstractElementViewModel extends AbstractChildViewModel
26 | implements ElementViewModel {
27 |
28 | public AbstractElementViewModel() {
29 | super();
30 | }
31 |
32 | @Override
33 | protected AbstractElementHistory getHistory() {
34 | return (AbstractElementHistory) super.getHistory();
35 | }
36 | }
37 |
--------------------------------------------------------------------------------
/tabshell-layout/src/main/java/com/techsenger/tabshell/layout/dock/TabDockComponent.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2024-2025 Pavel Castornii.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package com.techsenger.tabshell.layout.dock;
18 |
19 | import com.techsenger.tabshell.layout.tabhost.TabHostComponent;
20 |
21 | /**
22 | *
23 | * @author Pavel Castornii
24 | */
25 | public class TabDockComponent> extends TabHostComponent {
26 |
27 | private final DockLayoutComponent> layout;
28 |
29 | public TabDockComponent(T view, DockLayoutComponent> layout) {
30 | super(view);
31 | this.layout = layout;
32 | }
33 |
34 | public DockLayoutComponent> getLayout() {
35 | return layout;
36 | }
37 | }
38 |
--------------------------------------------------------------------------------
/tabshell-core/src/main/java/com/techsenger/tabshell/core/settings/xml/FontAdapter.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2024-2025 Pavel Castornii.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package com.techsenger.tabshell.core.settings.xml;
18 |
19 | import jakarta.xml.bind.annotation.adapters.XmlAdapter;
20 | import javafx.scene.text.Font;
21 |
22 | /**
23 | *
24 | * @author Pavel Castornii
25 | */
26 | public class FontAdapter extends XmlAdapter {
27 |
28 | @Override
29 | public Font unmarshal(XmlFontSettings s) {
30 | return Font.font(s.getFamily(), s.getSize());
31 | }
32 |
33 | @Override
34 | public XmlFontSettings marshal(Font v) {
35 | return new XmlFontSettings(v.getFamily(), v.getSize());
36 | }
37 | }
38 |
--------------------------------------------------------------------------------
/tabshell-jfx/src/main/java/com/techsenger/tabshell/jfx/style/JfxIcons.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2024-2025 Pavel Castornii.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package com.techsenger.tabshell.jfx.style;
18 |
19 | import com.techsenger.tabshell.material.icon.StyleFontIcon;
20 |
21 | /**
22 | *
23 | * @author Pavel Castornii
24 | */
25 | public interface JfxIcons {
26 |
27 | StyleFontIcon SELECT = new StyleFontIcon("select-icon");
28 |
29 | StyleFontIcon RECORD_START = new StyleFontIcon("record-start-icon");
30 |
31 | StyleFontIcon RECORD_STOP = new StyleFontIcon("record-stop-icon");
32 |
33 | StyleFontIcon FILTER = new StyleFontIcon("filter-icon");
34 |
35 | StyleFontIcon SELECTED_ONLY = new StyleFontIcon("selected-only-icon");
36 | }
37 |
--------------------------------------------------------------------------------
/tabshell-shared/src/main/java/module-info.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2024-2025 Pavel Castornii.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | module com.techsenger.tabshell.shared {
18 | requires org.slf4j;
19 | requires com.techsenger.toolkit.fx;
20 | requires com.techsenger.patternfx.core;
21 | requires com.techsenger.tabshell.material;
22 | requires com.techsenger.tabshell.core;
23 | requires javafx.base;
24 | requires javafx.graphics;
25 | requires javafx.controls;
26 | requires javafx.swing;
27 | requires atlantafx.base;
28 | requires jakarta.xml.bind;
29 |
30 | exports com.techsenger.tabshell.shared.find;
31 | exports com.techsenger.tabshell.shared.menu;
32 | exports com.techsenger.tabshell.shared.style;
33 | }
34 |
--------------------------------------------------------------------------------
/tabshell-storage/src/main/java/com/techsenger/tabshell/storage/InvalidFileException.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2024-2025 Pavel Castornii.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package com.techsenger.tabshell.storage;
18 |
19 | import java.io.IOException;
20 |
21 | /**
22 | *
23 | * @author Pavel Castornii
24 | */
25 | public class InvalidFileException extends IOException {
26 |
27 | public InvalidFileException() {
28 |
29 | }
30 |
31 | public InvalidFileException(String message) {
32 | super(message);
33 | }
34 |
35 | public InvalidFileException(String message, Throwable cause) {
36 | super(message, cause);
37 | }
38 |
39 | public InvalidFileException(Throwable cause) {
40 | super(cause);
41 | }
42 | }
43 |
--------------------------------------------------------------------------------
/tabshell-jfx/src/main/resources/com/techsenger/tabshell/jfx/inspector/inspector-tab.css:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2024-2025 Pavel Castornii.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | /*
18 | Author: Pavel Castornii
19 | */
20 |
21 | .tree-view {
22 | -fx-border-width: 0;
23 | }
24 |
25 | .tree-table-view {
26 | -fx-border-width: 0;
27 | }
28 |
29 | .tree-table-view .tree-table-row-cell {
30 | -fx-background-insets: 0, 0;
31 | }
32 |
33 | .tree-table-view .tree-table-row-cell .label.default-value {
34 | -fx-text-fill: -color-fg-muted;
35 | }
36 |
37 | .tree-table-view .tree-table-row-cell .css-container {
38 | -fx-alignment: TOP_LEFT;
39 | }
40 |
41 | .tree-table-view .tree-table-row-cell .css-container > .css-hint {
42 | -fx-font-size: 0.65em;
43 | }
44 |
--------------------------------------------------------------------------------
/tabshell-core/src/main/java/com/techsenger/tabshell/core/CloseScope.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2024-2025 Pavel Castornii.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package com.techsenger.tabshell.core;
18 |
19 | /**
20 | * Defines the scope of a close operation. Indicates whether the close event originated from a single tab
21 | * or the entire shell (main application window).
22 | *
23 | * @author Pavel Castornii
24 | */
25 | public enum CloseScope {
26 |
27 | /**
28 | * The close request was triggered for a specific tab
29 | * (e.g., user clicked the tab's close button).
30 | */
31 | TAB,
32 |
33 | /**
34 | * The close request was triggered at the shell level
35 | * (e.g., main window closure, application exit).
36 | */
37 | SHELL
38 | }
39 |
--------------------------------------------------------------------------------
/tabshell-core/src/main/java/com/techsenger/tabshell/core/menu/manager/ActionInterceptor.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2024-2025 Pavel Castornii.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package com.techsenger.tabshell.core.menu.manager;
18 |
19 | import javafx.event.ActionEvent;
20 | import javafx.event.EventHandler;
21 |
22 | /**
23 | * This interface is a wrapper for menu/menu item actions. We need it because when menu items are not shown to user
24 | * they are NOT disabled and their actions can be called using accelerator keys. So, it intercepts the event and
25 | * decides to call origin action or not.
26 | *
27 | * @author Pavel Castornii
28 | */
29 | public interface ActionInterceptor extends EventHandler {
30 |
31 | EventHandler getAction();
32 | }
33 |
--------------------------------------------------------------------------------
/tabshell-material/src/main/java/com/techsenger/tabshell/material/theme/DefaultThemePalette32.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2024-2025 Pavel Castornii.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package com.techsenger.tabshell.material.theme;
18 |
19 | /**
20 | * @author Pavel Castornii
21 | */
22 | class DefaultThemePalette32 implements ThemePalette32 {
23 |
24 | private int[] fgColors;
25 |
26 | private int[] bgColors;
27 |
28 | DefaultThemePalette32(int[] fgColors, int[] bgColors) {
29 | this.fgColors = fgColors;
30 | this.bgColors = bgColors;
31 | }
32 |
33 | @Override
34 | public int[] getFgColors() {
35 | return fgColors;
36 | }
37 |
38 | @Override
39 | public int[] getBgColors() {
40 | return bgColors;
41 | }
42 | }
43 |
--------------------------------------------------------------------------------
/tabshell-core/src/main/java/com/techsenger/tabshell/core/CloseRequestResult.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2024-2025 Pavel Castornii.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package com.techsenger.tabshell.core;
18 |
19 | /**
20 | *
21 | * @author Pavel Castornii
22 | */
23 | public enum CloseRequestResult {
24 |
25 | /**
26 | * All components were successfully closed.
27 | */
28 | SUCCESS,
29 |
30 | /**
31 | * At least one component was not ready to close.
32 | */
33 | NOT_READY_TO_CLOSE,
34 |
35 | /**
36 | * The close operation was cancelled during preparation.
37 | */
38 | PREPARATION_CANCELLED,
39 |
40 | /**
41 | * The maximum number of close attempts was reached without success.
42 | */
43 | MAX_ATTEMPTS_REACHED
44 | }
45 |
--------------------------------------------------------------------------------
/tabshell-core/src/main/java/com/techsenger/tabshell/core/area/AbstractAreaComponent.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2024-2025 Pavel Castornii.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package com.techsenger.tabshell.core.area;
18 |
19 | import com.techsenger.patternfx.core.AbstractChildComponent;
20 |
21 | /**
22 | *
23 | * @author Pavel Castornii
24 | */
25 | public abstract class AbstractAreaComponent>
26 | extends AbstractChildComponent implements AreaComponent {
27 |
28 | protected class Mediator extends AbstractChildComponent.Mediator implements AreaMediator {
29 |
30 | }
31 |
32 | public AbstractAreaComponent(T view) {
33 | super(view);
34 | }
35 |
36 | @Override
37 | protected abstract Mediator createMediator();
38 | }
39 |
--------------------------------------------------------------------------------
/tabshell-core/src/main/java/com/techsenger/tabshell/core/page/AbstractPageComponent.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2024-2025 Pavel Castornii.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package com.techsenger.tabshell.core.page;
18 |
19 | import com.techsenger.tabshell.core.area.AbstractAreaComponent;
20 |
21 | /**
22 | *
23 | * @author Pavel Castornii
24 | */
25 | public abstract class AbstractPageComponent> extends AbstractAreaComponent
26 | implements PageComponent {
27 |
28 | protected class Mediator extends AbstractAreaComponent.Mediator implements PageMediator {
29 |
30 | }
31 |
32 | public AbstractPageComponent(T view) {
33 | super(view);
34 | }
35 |
36 | @Override
37 | protected abstract Mediator createMediator();
38 | }
39 |
--------------------------------------------------------------------------------