Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

MainView materialfx #190

Open
wants to merge 72 commits into
base: filter-panel
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from 58 commits
Commits
Show all changes
72 commits
Select commit Hold shift + click to select a range
907069b
\added materialfx dialogs and fixed some bugs
Anastasia-Nikitina Apr 15, 2023
d899297
removed commented code
Anastasia-Nikitina Apr 15, 2023
d8cd2ff
added new style constants
Anastasia-Nikitina Apr 21, 2023
d6f3da0
added panels
Anastasia-Nikitina Apr 21, 2023
92dbf3a
removed unused
Anastasia-Nikitina Apr 21, 2023
5bf682c
added borderpane and spaces
Anastasia-Nikitina Apr 23, 2023
50fc61a
added importAction
Anastasia-Nikitina Apr 23, 2023
8173d44
spaces and added paddingAll
Anastasia-Nikitina Apr 26, 2023
8b47503
fixes
Anastasia-Nikitina Apr 26, 2023
642865e
removed unused
Anastasia-Nikitina Apr 26, 2023
c4726fd
added grid tab
Anastasia-Nikitina Apr 26, 2023
b054f53
removed grid button
Anastasia-Nikitina Apr 26, 2023
75133ac
removed unused
Anastasia-Nikitina Apr 26, 2023
1f44155
added correct icons
Anastasia-Nikitina Apr 26, 2023
9176b58
by inject()
Anastasia-Nikitina Apr 26, 2023
222fe0c
Just an automaticly formatted codestyle
mi-sts Apr 28, 2023
fc66c14
Wildcards fix
mi-sts Apr 28, 2023
e110d27
added materialfx dialogs and fixed some bugs
Anastasia-Nikitina Apr 15, 2023
9fcc802
removed commented code
Anastasia-Nikitina Apr 15, 2023
c56eed7
added new style constants
Anastasia-Nikitina Apr 21, 2023
2edfa45
added panels
Anastasia-Nikitina Apr 21, 2023
7463506
changed SidePanelTab class
Anastasia-Nikitina Apr 23, 2023
b4bfb50
fixes
Anastasia-Nikitina Apr 26, 2023
d4f0de6
codestyle
Anastasia-Nikitina May 8, 2023
879c88a
Tootips shortcuts
Alexander-Ploskin May 9, 2023
2437480
Fix an incorrect initializaion of dividers positions
mi-sts May 4, 2023
8366103
Add a filters panel view
mi-sts May 5, 2023
59ebb50
Update filter settings dialog design and add a logic
mi-sts May 10, 2023
f844d41
Add a filter applying logic
mi-sts May 11, 2023
14501f3
added materialfx dialogs and fixed some bugs
Anastasia-Nikitina Apr 15, 2023
b97bc31
removed commented code
Anastasia-Nikitina Apr 15, 2023
15c5bef
changed style of tabs
Anastasia-Nikitina Apr 21, 2023
db26999
added panels
Anastasia-Nikitina Apr 21, 2023
8b08dac
removed unused
Anastasia-Nikitina Apr 26, 2023
826ab5f
added correct icons
Anastasia-Nikitina Apr 26, 2023
a79b397
added prefSize
Anastasia-Nikitina Apr 27, 2023
ba917e0
design for mainView
Anastasia-Nikitina Apr 28, 2023
4493e7f
svg instead of png
Anastasia-Nikitina May 20, 2023
e55b9ae
added design for catalogue
Anastasia-Nikitina May 20, 2023
927f65d
removed unused
Anastasia-Nikitina May 20, 2023
faeeb79
added controller for settings dialog
Anastasia-Nikitina May 20, 2023
3637374
added design for grid settings
Anastasia-Nikitina May 20, 2023
31ac808
added design for layers settings
Anastasia-Nikitina May 20, 2023
0c04323
removed unused fun and val
Anastasia-Nikitina May 20, 2023
bea89bb
removed stylesheet
Anastasia-Nikitina May 20, 2023
ce91351
added placeholder for scene
Anastasia-Nikitina May 20, 2023
6c5ab66
change type of container for dialog
Anastasia-Nikitina May 20, 2023
1787108
added size for icon
Anastasia-Nikitina May 20, 2023
9a5a12e
changes paths
Anastasia-Nikitina May 20, 2023
fc145c4
changes paths
Anastasia-Nikitina May 20, 2023
a3770eb
changed and added utils
Anastasia-Nikitina May 20, 2023
afdb8a1
added design for settings dialog
Anastasia-Nikitina May 20, 2023
266cc65
added svg placeholder
Anastasia-Nikitina May 20, 2023
2245262
added icon
Anastasia-Nikitina May 20, 2023
1aaddd3
removed companion object
Anastasia-Nikitina May 20, 2023
6a7018b
removed or commented unused
Anastasia-Nikitina May 20, 2023
5fc3155
rebase
Anastasia-Nikitina May 21, 2023
2c9513d
codestyle
Anastasia-Nikitina May 23, 2023
eb93adf
codestyle
Anastasia-Nikitina May 28, 2023
2309551
removed png
Anastasia-Nikitina May 30, 2023
56cf352
fixed svg
Anastasia-Nikitina May 30, 2023
5add380
changed logo
Anastasia-Nikitina May 30, 2023
f00e48e
fixed disabling button
Anastasia-Nikitina May 30, 2023
9d07887
fixed some bugs
Anastasia-Nikitina May 30, 2023
bf88422
added val instead of var
Anastasia-Nikitina May 30, 2023
d513985
removed unused
Anastasia-Nikitina May 30, 2023
0063811
fixed tabs and spaces
Anastasia-Nikitina May 30, 2023
24c1013
removed unused
Anastasia-Nikitina Jun 12, 2023
039bb55
fixes
Anastasia-Nikitina Jun 12, 2023
0f138b9
fixed linter warning
Anastasia-Nikitina Jun 12, 2023
689ee22
fixed problems
Anastasia-Nikitina Jun 19, 2023
e45f8c2
fixed linter warning
Anastasia-Nikitina Jun 19, 2023
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 5 additions & 1 deletion src/main/kotlin/solve/SolveApp.kt
Original file line number Diff line number Diff line change
@@ -1,7 +1,9 @@
package solve

import de.codecentric.centerdevice.javafxsvg.SvgImageLoaderFactory
import javafx.scene.image.Image
import javafx.stage.Stage
import solve.constants.IconsApp
import solve.main.MainView
import solve.scene.view.landmarks.AnimationProvider
import solve.scene.view.landmarks.JavaFXAnimationProvider
Expand All @@ -18,10 +20,13 @@ class SolveApp : App(MainView::class, ApplicationStylesheet::class) {
registerServices()

with(stage) {
stage.icons.add(Image(IconsApp))
width = 1000.0
height = 600.0
title = "SOLVE"
isMaximized = true
}

super.start(stage)
}

Expand All @@ -31,7 +36,6 @@ class SolveApp : App(MainView::class, ApplicationStylesheet::class) {

private fun initializeDependencies() {
SvgImageLoaderFactory.install(SVGImageLoaderDimensionProvider())

initializeStyle()
}

Expand Down
25 changes: 17 additions & 8 deletions src/main/kotlin/solve/catalogue/CatalogueUtils.kt
Original file line number Diff line number Diff line change
@@ -1,18 +1,27 @@
package solve.catalogue

import javafx.scene.control.Labeled
import javafx.scene.control.ListView
import io.github.palexdev.materialfx.controls.MFXCheckListView
import io.github.palexdev.materialfx.selection.base.IMultipleSelectionModel
import javafx.beans.property.ObjectProperty
import javafx.beans.property.SimpleObjectProperty
import solve.project.model.ProjectFrame
import solve.project.model.ProjectLayer
import tornadofx.tooltip

fun <T> MFXCheckListView<T>.selectionModelProperty(): ObjectProperty<IMultipleSelectionModel<T>> {
return SimpleObjectProperty(selectionModel)
}

fun <T> MFXCheckListView<T>.setSelectionModel(value: IMultipleSelectionModel<T>) {
selectionModelProperty().set(value)
}

val ProjectFrame.layers: List<ProjectLayer>
get() = landmarkFiles.map { it.projectLayer }.distinct()

fun <T> synchronizeListViewsSelections(firstListView: ListView<T>, secondListView: ListView<T>) {
secondListView.selectionModel = firstListView.selectionModel
fun <T> synchronizeListViewsSelections(firstListView: MFXCheckListView<T>, secondListView: MFXCheckListView<T>) {
secondListView.setSelectionModel(firstListView.selectionModel)
}

fun Labeled.addNameTooltip() {
tooltip(text)
}
// fun Labeled.addNameTooltip() {
// tooltip(text)
// }
Alexander-Ploskin marked this conversation as resolved.
Show resolved Hide resolved
Original file line number Diff line number Diff line change
Expand Up @@ -25,9 +25,9 @@ class CatalogueController : Controller() {
SceneFacade.visualize(layers, frames, true)
}

fun selectAllFields() = view.selectAllFields()
fun checkAllFields() = view.checkAllFields()

fun deselectAllFields() = view.deselectAllFields()
fun uncheckAllFields() = view.uncheckAllFields()

fun changeViewFormat(format: ViewFormat) = view.changeViewFormat(format)

Expand Down
75 changes: 43 additions & 32 deletions src/main/kotlin/solve/catalogue/view/CatalogueSettingsView.kt
Original file line number Diff line number Diff line change
@@ -1,14 +1,17 @@
package solve.catalogue.view

import javafx.beans.property.SimpleObjectProperty
import javafx.geometry.Insets
import javafx.geometry.Pos
import javafx.scene.control.CheckBox
import javafx.scene.control.RadioButton
import javafx.scene.control.ToggleButton
import javafx.scene.control.ToggleGroup
import javafx.scene.layout.Priority
import solve.catalogue.addNameTooltip
import org.controlsfx.control.SegmentedButton
import solve.catalogue.controller.CatalogueController
import solve.catalogue.model.ViewFormat
import solve.styles.CatalogueViewStylesheet
import solve.styles.Style
import solve.utils.materialfx.mfxCheckbox
import tornadofx.*
import kotlin.properties.ReadWriteProperty
import kotlin.reflect.KProperty
Expand All @@ -31,9 +34,6 @@ class CatalogueSettingsView : View() {
private val catalogueView: CatalogueView by inject()

private val viewFormatToggleGroup = ToggleGroup()
private lateinit var fileNameViewRadioButton: RadioButton
private lateinit var imagePreviewRadioButton: RadioButton

private lateinit var selectionCheckBox: CheckBox
private var checkBoxSelectionState: SelectionState by checkBoxSelectionStateDelegate()

Expand All @@ -45,29 +45,38 @@ class CatalogueSettingsView : View() {
}
private var isDisplayingInfoLabel = false

override val root = vbox {
hbox(5) {
selectionCheckBox = checkbox("Select all", isSelectionCheckBoxCheckedProperty) {
addNameTooltip()
action {
if (isSelected) {
controller.selectAllFields()
} else {
controller.deselectAllFields()
private var fileNameViewRadioButton = ToggleButton("FILES").apply {
style = "-fx-font-family: ${Style.FontCondensed}; -fx-font-weight: ${Style.FontWeightBold};"
}
private var imagePreviewRadioButton = ToggleButton("IMAGES").apply {
style = "-fx-font-family: ${Style.FontCondensed}; -fx-font-weight: ${Style.FontWeightBold};"
}

var segmentedButton = SegmentedButton(fileNameViewRadioButton, imagePreviewRadioButton)
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

avoid public fields


override val root =
vbox {
hbox(130) {
addStylesheet(CatalogueViewStylesheet::class)
maxWidth = 500.0
padding = Insets(0.0, 0.0, 0.0, 0.0)
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

use paddingall

selectionCheckBox = mfxCheckbox {
paddingLeft = 7.0
// addNameTooltip()
Alexander-Ploskin marked this conversation as resolved.
Show resolved Hide resolved
action {
if (isSelected) {
controller.checkAllFields()
} else {
controller.uncheckAllFields()
}
}
}
segmentedButton.toggleGroup = viewFormatToggleGroup

add(segmentedButton)
paddingBottom = 4
}
pane().hgrow = Priority.ALWAYS
fileNameViewRadioButton = radiobutton("File view", viewFormatToggleGroup) {
addNameTooltip()
}
imagePreviewRadioButton = radiobutton("Image preview", viewFormatToggleGroup) {
addNameTooltip()
}
paddingBottom = 4
}
add(infoNode)
}.also { initialize() }
}.also { initialize() }

init {
viewFormatProperty.onChange { newFormat ->
Expand All @@ -78,7 +87,7 @@ class CatalogueSettingsView : View() {

fun resetSettings() {
checkBoxSelectionState = CatalogueController.initialSelectionState
viewFormatToggleGroup.selectToggle(getViewFormatRadioButton(CatalogueController.initialViewFormat))
viewFormatToggleGroup.selectToggle(getViewFormatToggleButton(CatalogueController.initialViewFormat))
}

fun displayInfoLabel(withText: String) {
Expand All @@ -105,24 +114,24 @@ class CatalogueSettingsView : View() {

private fun initialize() {
initializeViewFormatRadioButtons()
viewFormatToggleGroup.selectToggle(getViewFormatRadioButton(CatalogueController.initialViewFormat))
viewFormatToggleGroup.selectToggle(getViewFormatToggleButton(CatalogueController.initialViewFormat))
}

private fun getRadioButtonViewFormat(radioButton: RadioButton) = when (radioButton) {
private fun getRadioButtonViewFormat(toggleButton: ToggleButton) = when (toggleButton) {
fileNameViewRadioButton -> ViewFormat.FileName
imagePreviewRadioButton -> ViewFormat.ImagePreview
else -> throw IllegalArgumentException("Unexpected view format radio button!")
else -> throw IllegalArgumentException("Unexpected view format toggle button!")
}

private fun getViewFormatRadioButton(viewFormat: ViewFormat) = when (viewFormat) {
private fun getViewFormatToggleButton(viewFormat: ViewFormat) = when (viewFormat) {
ViewFormat.FileName -> fileNameViewRadioButton
ViewFormat.ImagePreview -> imagePreviewRadioButton
}

private fun initializeViewFormatRadioButtons() {
viewFormatToggleGroup.selectedToggleProperty().onChange {
it ?: return@onChange
viewFormat = getRadioButtonViewFormat(it as RadioButton)
viewFormat = getRadioButtonViewFormat(it as ToggleButton)
}
}

Expand All @@ -137,10 +146,12 @@ class CatalogueSettingsView : View() {
selectionCheckBox.isIndeterminate = false
isSelectionCheckBoxChecked = true
}

SelectionState.None -> {
selectionCheckBox.isIndeterminate = false
isSelectionCheckBoxChecked = false
}

SelectionState.Part -> {
selectionCheckBox.isIndeterminate = true
isSelectionCheckBoxChecked = false
Expand Down
Loading