Skip to content

Commit 2f3524e

Browse files
committed
added an action to make a material as embedded.
1 parent 2de71f0 commit 2f3524e

6 files changed

Lines changed: 71 additions & 3 deletions

File tree

src/main/java/com/ss/editor/Messages.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -751,6 +751,10 @@ public class Messages {
751751
* The constant MODEL_NODE_TREE_ACTION_SAVE_AS.
752752
*/
753753
public static final String MODEL_NODE_TREE_ACTION_SAVE_AS;
754+
/**
755+
* The constant MODEL_NODE_TREE_ACTION_MAKE_EMBEDDED.
756+
*/
757+
public static final String MODEL_NODE_TREE_ACTION_MAKE_EMBEDDED;
754758
/**
755759
* The constant MODEL_NODE_TREE_ACTION_LINK_MODEL.
756760
*/
@@ -2575,6 +2579,7 @@ public class Messages {
25752579
MODEL_NODE_TREE_ACTION_CREATE_PRIMITIVE_QUAD = bundle.getString("ModelNodeTreeActionCreatePrimitiveQuad");
25762580
MODEL_NODE_TREE_ACTION_LOAD_MODEL = bundle.getString("ModelNodeTreeActionLoadModel");
25772581
MODEL_NODE_TREE_ACTION_SAVE_AS = bundle.getString("ModelNodeTreeActionSaveAs");
2582+
MODEL_NODE_TREE_ACTION_MAKE_EMBEDDED = bundle.getString("ModelNodeTreeActionMakeEmbedded");
25782583
MODEL_NODE_TREE_ACTION_LINK_MODEL = bundle.getString("ModelNodeTreeActionLinkModel");
25792584
MODEL_NODE_TREE_ACTION_TANGENT_GENERATOR = bundle.getString("ModelNodeTreeActionTangentGenerator");
25802585
MODEL_NODE_TREE_ACTION_LOD_GENERATOR = bundle.getString("ModelNodeTreeActionLoDGenerator");

src/main/java/com/ss/editor/ui/control/model/node/spatial/MaterialTreeNode.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
import com.jme3.scene.Spatial;
77
import com.ss.editor.Messages;
88
import com.ss.editor.ui.Icons;
9+
import com.ss.editor.ui.control.model.tree.action.MakeAsEmbeddedMaterialAction;
910
import com.ss.editor.ui.control.model.tree.action.SaveAsMaterialAction;
1011
import com.ss.editor.ui.control.tree.NodeTree;
1112
import com.ss.editor.ui.control.tree.node.TreeNode;
@@ -41,6 +42,7 @@ public MaterialTreeNode(@NotNull final Material element, final long objectId) {
4142
public void fillContextMenu(@NotNull final NodeTree<?> nodeTree, @NotNull final ObservableList<MenuItem> items) {
4243
super.fillContextMenu(nodeTree, items);
4344

45+
final Material material = getElement();
4446
final TreeNode<?> parent = notNull(getParent());
4547
final Object parentElement = parent.getElement();
4648
final Object linkNode = parentElement instanceof Spatial ?
@@ -49,6 +51,10 @@ public void fillContextMenu(@NotNull final NodeTree<?> nodeTree, @NotNull final
4951
if (linkNode == null) {
5052
items.add(new SaveAsMaterialAction(nodeTree, this));
5153
}
54+
55+
if (material.getKey() != null) {
56+
items.add(new MakeAsEmbeddedMaterialAction(nodeTree, this));
57+
}
5258
}
5359

5460
@Override
Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
package com.ss.editor.ui.control.model.tree.action;
2+
3+
import static com.ss.rlib.util.ObjectUtils.notNull;
4+
import com.jme3.asset.AssetKey;
5+
import com.jme3.material.Material;
6+
import com.ss.editor.Messages;
7+
import com.ss.editor.annotation.FXThread;
8+
import com.ss.editor.model.undo.editor.ChangeConsumer;
9+
import com.ss.editor.ui.Icons;
10+
import com.ss.editor.ui.control.property.operation.PropertyOperation;
11+
import com.ss.editor.ui.control.tree.NodeTree;
12+
import com.ss.editor.ui.control.tree.action.AbstractNodeAction;
13+
import com.ss.editor.ui.control.tree.node.TreeNode;
14+
import javafx.scene.image.Image;
15+
import org.jetbrains.annotations.NotNull;
16+
import org.jetbrains.annotations.Nullable;
17+
18+
/**
19+
* The implementation of the {@link AbstractNodeAction} to make a material as embedded.
20+
*
21+
* @author JavaSaBr
22+
*/
23+
public class MakeAsEmbeddedMaterialAction extends AbstractNodeAction<ChangeConsumer> {
24+
25+
public MakeAsEmbeddedMaterialAction(@NotNull final NodeTree<?> nodeTree, @NotNull final TreeNode<?> node) {
26+
super(nodeTree, node);
27+
}
28+
29+
@Override
30+
protected @Nullable Image getIcon() {
31+
return Icons.INFLUENCER_16;
32+
}
33+
34+
@Override
35+
protected @NotNull String getName() {
36+
return Messages.MODEL_NODE_TREE_ACTION_MAKE_EMBEDDED;
37+
}
38+
39+
@Override
40+
@FXThread
41+
protected void process() {
42+
super.process();
43+
44+
final TreeNode<?> node = getNode();
45+
final Material material = (Material) node.getElement();
46+
47+
final PropertyOperation<ChangeConsumer, Material, AssetKey> operation =
48+
new PropertyOperation<>(material, "AssetKey", null, material.getKey());
49+
operation.setApplyHandler(Material::setKey);
50+
51+
final ChangeConsumer changeConsumer = notNull(getNodeTree().getChangeConsumer());
52+
changeConsumer.execute(operation);
53+
}
54+
}

src/main/resources/messages/messages.properties

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -198,6 +198,7 @@ ModelNodeTreeActionCreatePrimitiveSphere=Sphere
198198
ModelNodeTreeActionCreatePrimitiveQuad=Quad
199199
ModelNodeTreeActionLoadModel=Load model
200200
ModelNodeTreeActionSaveAs=Save As
201+
ModelNodeTreeActionMakeEmbedded=Make as embedded
201202
ModelNodeTreeActionLinkModel=Link model
202203
ModelNodeTreeActionTangentGenerator=Generate tangents
203204
ModelNodeTreeActionLoDGenerator=Generate levels of details
@@ -432,7 +433,7 @@ ModelPropertyDataType=Data type
432433
433434
MaterialModelPropertyControlNoTexture=No texture
434435
MaterialModelPropertyControlTextureSettings=Texture settings
435-
MaterialModelPropertyControlNoMaterial=No material
436+
MaterialModelPropertyControlNoMaterial=Embedded material
436437
AbstractElementPropertyControlNoElement=No element
437438
LayerPropertyControlNoLayer=No layer
438439
AudioKeyPropertyControlNoAudio=No audio

src/main/resources/messages/messages_de.properties

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -198,6 +198,7 @@ ModelNodeTreeActionCreatePrimitiveSphere=Kugel
198198
ModelNodeTreeActionCreatePrimitiveQuad=Fläche
199199
ModelNodeTreeActionLoadModel=Model laden
200200
ModelNodeTreeActionSaveAs=Save As
201+
ModelNodeTreeActionMakeEmbedded=Make as embedded
201202
ModelNodeTreeActionLinkModel=Model verlinken
202203
ModelNodeTreeActionTangentGenerator=Tangenten generieren
203204
ModelNodeTreeActionLoDGenerator=Detailwerte generieren
@@ -432,7 +433,7 @@ ModelPropertyDataType=Data type
432433
433434
MaterialModelPropertyControlNoTexture=Keine Textur
434435
MaterialModelPropertyControlTextureSettings=Texture settings
435-
MaterialModelPropertyControlNoMaterial=Kein Material
436+
MaterialModelPropertyControlNoMaterial=Embedded material
436437
AbstractElementPropertyControlNoElement=Kein Element
437438
LayerPropertyControlNoLayer=Keine Schicht
438439
AudioKeyPropertyControlNoAudio=Kein Audio

src/main/resources/messages/messages_ru.properties

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -200,6 +200,7 @@ ModelNodeTreeActionCreatePrimitiveSphere=Сфера
200200
ModelNodeTreeActionCreatePrimitiveQuad=Плоскость
201201
ModelNodeTreeActionLoadModel=Загрузить модель
202202
ModelNodeTreeActionSaveAs=Сохранить как
203+
ModelNodeTreeActionMakeEmbedded=Сделать как встроенный
203204
ModelNodeTreeActionLinkModel=Создать ссылку на модель
204205
ModelNodeTreeActionTangentGenerator=Сгенерировать тангенты
205206
ModelNodeTreeActionLoDGenerator=Сгенерировать уровни детализации
@@ -434,7 +435,7 @@ ModelPropertyDataType=Тип данных
434435
435436
MaterialModelPropertyControlNoTexture=Нет текстуры
436437
MaterialModelPropertyControlTextureSettings=Настройки текстуры
437-
MaterialModelPropertyControlNoMaterial=Нет материала
438+
MaterialModelPropertyControlNoMaterial=Встроенный материал
438439
AbstractElementPropertyControlNoElement=Нет элемента
439440
LayerPropertyControlNoLayer=Нет слоя
440441
AudioKeyPropertyControlNoAudio=Нет аудио

0 commit comments

Comments
 (0)