Skip to content

Commit fbdc7e9

Browse files
committed
implemented D&D material from an asset tree to material property control
1 parent 2bab9e6 commit fbdc7e9

File tree

3 files changed

+93
-24
lines changed

3 files changed

+93
-24
lines changed

src/com/ss/editor/ui/component/editor/impl/scene/AbstractSceneFileEditor.java

Lines changed: 19 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -818,7 +818,6 @@ protected void dragDropped(@NotNull final DragEvent dragEvent) {
818818
return;
819819
}
820820

821-
822821
for (final File file : files) {
823822

824823
if (file.getName().endsWith(FileExtensions.JME_OBJECT)) {
@@ -829,6 +828,25 @@ protected void dragDropped(@NotNull final DragEvent dragEvent) {
829828
}
830829
}
831830

831+
/**
832+
* Handle drag over.
833+
*/
834+
protected void dragOver(@NotNull final DragEvent dragEvent) {
835+
836+
final Dragboard dragboard = dragEvent.getDragboard();
837+
final List<File> files = unsafeCast(dragboard.getContent(DataFormat.FILES));
838+
839+
if (files == null || files.isEmpty()) {
840+
return;
841+
}
842+
843+
final Set<TransferMode> transferModes = dragboard.getTransferModes();
844+
final boolean isCopy = transferModes.contains(TransferMode.COPY);
845+
846+
dragEvent.acceptTransferModes(isCopy ? TransferMode.COPY : TransferMode.MOVE);
847+
dragEvent.consume();
848+
}
849+
832850
/**
833851
* Apply a new material from an asset tree.
834852
*
@@ -903,25 +921,6 @@ protected void addNewModel(final @NotNull DragEvent dragEvent, @NotNull final Pa
903921
});
904922
}
905923

906-
/**
907-
* Handle drag over.
908-
*/
909-
protected void dragOver(@NotNull final DragEvent dragEvent) {
910-
911-
final Dragboard dragboard = dragEvent.getDragboard();
912-
final List<File> files = unsafeCast(dragboard.getContent(DataFormat.FILES));
913-
914-
if (files == null || files.isEmpty()) {
915-
return;
916-
}
917-
918-
final Set<TransferMode> transferModes = dragboard.getTransferModes();
919-
final boolean isCopy = transferModes.contains(TransferMode.COPY);
920-
921-
dragEvent.acceptTransferModes(isCopy ? TransferMode.COPY : TransferMode.MOVE);
922-
dragEvent.consume();
923-
}
924-
925924
protected static void calcVSplitSize(@NotNull final SplitPane splitContainer) {
926925
splitContainer.setDividerPosition(0, 0.3);
927926
}

src/com/ss/editor/ui/control/model/property/control/MaterialKeyModelPropertyControl.java

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -54,10 +54,8 @@ protected void processChange() {
5454
dialog.show(scene.getWindow());
5555
}
5656

57-
/**
58-
* Add the mew material.
59-
*/
60-
private void addMaterial(@NotNull final Path file) {
57+
@Override
58+
protected void addMaterial(@NotNull final Path file) {
6159

6260
final Path assetFile = Objects.requireNonNull(getAssetFile(file));
6361
final MaterialKey materialKey = new MaterialKey(toAssetPath(assetFile));

src/com/ss/editor/ui/control/model/property/control/MaterialModelPropertyControl.java

Lines changed: 72 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
package com.ss.editor.ui.control.model.property.control;
22

3+
import static rlib.util.ClassUtils.unsafeCast;
4+
35
import com.jme3.material.Material;
46
import com.jme3.scene.Spatial;
57
import com.ss.editor.Editor;
@@ -15,12 +17,20 @@
1517
import org.jetbrains.annotations.NotNull;
1618
import org.jetbrains.annotations.Nullable;
1719

20+
import java.io.File;
21+
import java.nio.file.Path;
22+
import java.util.List;
1823
import java.util.Objects;
24+
import java.util.Set;
1925

2026
import javafx.geometry.Insets;
2127
import javafx.scene.control.Button;
2228
import javafx.scene.control.Label;
2329
import javafx.scene.image.ImageView;
30+
import javafx.scene.input.DataFormat;
31+
import javafx.scene.input.DragEvent;
32+
import javafx.scene.input.Dragboard;
33+
import javafx.scene.input.TransferMode;
2434
import javafx.scene.layout.HBox;
2535
import rlib.ui.util.FXUtils;
2636
import rlib.util.array.Array;
@@ -54,8 +64,70 @@ public class MaterialModelPropertyControl<T extends Spatial, V> extends ModelPro
5464
public MaterialModelPropertyControl(@Nullable final V element, @NotNull final String paramName,
5565
@NotNull final ModelChangeConsumer modelChangeConsumer) {
5666
super(element, paramName, modelChangeConsumer);
67+
setOnDragOver(this::dragOver);
68+
setOnDragDropped(this::dragDropped);
69+
setOnDragExited(this::dragExited);
70+
}
71+
72+
/**
73+
* Handle grad exiting.
74+
*/
75+
private void dragExited(@NotNull final DragEvent dragEvent) {
76+
5777
}
5878

79+
/**
80+
* Handle dropped files to editor.
81+
*/
82+
private void dragDropped(@NotNull final DragEvent dragEvent) {
83+
84+
final Dragboard dragboard = dragEvent.getDragboard();
85+
final List<File> files = unsafeCast(dragboard.getContent(DataFormat.FILES));
86+
87+
if (files == null || files.size() != 1) {
88+
return;
89+
}
90+
91+
final File file = files.get(0);
92+
if (!file.getName().endsWith(FileExtensions.JME_MATERIAL)) {
93+
return;
94+
}
95+
96+
addMaterial(file.toPath());
97+
}
98+
99+
/**
100+
* Handle drag over.
101+
*/
102+
private void dragOver(@NotNull final DragEvent dragEvent) {
103+
104+
final Dragboard dragboard = dragEvent.getDragboard();
105+
final List<File> files = unsafeCast(dragboard.getContent(DataFormat.FILES));
106+
107+
if (files == null || files.size() != 1) {
108+
return;
109+
}
110+
111+
final File file = files.get(0);
112+
if (!file.getName().endsWith(FileExtensions.JME_MATERIAL)) {
113+
return;
114+
}
115+
116+
final Set<TransferMode> transferModes = dragboard.getTransferModes();
117+
final boolean isCopy = transferModes.contains(TransferMode.COPY);
118+
119+
dragEvent.acceptTransferModes(isCopy ? TransferMode.COPY : TransferMode.MOVE);
120+
dragEvent.consume();
121+
}
122+
123+
/**
124+
* Add the mew material.
125+
*/
126+
protected void addMaterial(@NotNull final Path file) {
127+
128+
}
129+
130+
59131
@Override
60132
protected void createComponents(@NotNull final HBox container) {
61133
super.createComponents(container);

0 commit comments

Comments
 (0)