Skip to content

Commit 1fd53ed

Browse files
committed
added copy-as- molfile and smiles options
1 parent d63caa4 commit 1fd53ed

File tree

3 files changed

+61
-13
lines changed

3 files changed

+61
-13
lines changed

src/main/java/org/openmolecules/fx/viewer3d/V3DPopupMenu.java

Lines changed: 39 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -88,13 +88,30 @@ public V3DPopupMenu(V3DScene scene, V3DMolecule fxmol) {
8888
itemCopy3D.setDisable(fxmol == null);
8989
itemCopy3D.setOnAction(e -> scene.copy3D(fxmol));
9090

91-
MenuItem itemCopy2D = new MenuItem("Copy Molecule 2D");
91+
92+
93+
MenuItem itemCopy2D = new MenuItem("As 2D-Molecule");
9294
itemCopy2D.setDisable(fxmol == null);
9395
itemCopy2D.setOnAction(e -> scene.copy2D(fxmol));
9496

95-
MenuItem itemCopyIDCode = new MenuItem("Copy Molecule ID-Code");
97+
MenuItem itemCopyIDCode = new MenuItem("As ID-Code");
9698
itemCopyIDCode.setDisable(fxmol == null);
97-
itemCopyIDCode.setOnAction(e -> scene.copyIDCode(fxmol));
99+
itemCopyIDCode.setOnAction(e -> scene.copyAsIDCode(fxmol));
100+
101+
MenuItem itemCopyMolfileV2 = new MenuItem("As Molfile V2");
102+
itemCopyMolfileV2.setDisable(fxmol == null);
103+
itemCopyMolfileV2.setOnAction(e -> scene.copyAsMolfileV2(fxmol));
104+
105+
MenuItem itemCopyMolfileV3 = new MenuItem("As Molfile V3");
106+
itemCopyMolfileV3.setDisable(fxmol == null);
107+
itemCopyMolfileV3.setOnAction(e -> scene.copyAsMolfileV3(fxmol));
108+
109+
MenuItem itemCopySmiles = new MenuItem("As SMILES");
110+
itemCopySmiles.setDisable(fxmol == null);
111+
itemCopySmiles.setOnAction(e -> scene.copyAsSmiles(fxmol));
112+
113+
Menu menuCopy = new Menu("Copy Molecule As");
114+
menuCopy.getItems().addAll(itemCopy2D, itemCopyIDCode, itemCopyMolfileV2, itemCopyMolfileV3, itemCopySmiles);
98115

99116
MenuItem itemPaste = new MenuItem("Paste Molecule");
100117
itemPaste.setOnAction(e -> scene.paste());
@@ -106,7 +123,7 @@ public V3DPopupMenu(V3DScene scene, V3DMolecule fxmol) {
106123
MenuItem itemClear = new MenuItem("Clear All");
107124
itemClear.setOnAction(e -> scene.clearAll());
108125

109-
menuEdit.getItems().addAll(itemCut, itemCopy3D, itemCopy2D, itemCopyIDCode, itemPaste, itemDelete, new SeparatorMenuItem(), itemClear);
126+
menuEdit.getItems().addAll(itemCut, itemCopy3D, menuCopy, itemPaste, itemDelete, new SeparatorMenuItem(), itemClear);
110127

111128
if (settings == null || !settings.contains(V3DScene.ViewerSettings.SMALL_MOLS)) {
112129
MenuItem itemCrop6 = new MenuItem("0.6 nm");
@@ -131,20 +148,32 @@ public V3DPopupMenu(V3DScene scene, V3DMolecule fxmol) {
131148
getItems().add(new SeparatorMenuItem());
132149
}
133150
else {
134-
MenuItem itemCopy3D = new MenuItem("Molecule 3D");
151+
MenuItem itemCopy3D = new MenuItem("As 3D-Molecule");
135152
itemCopy3D.setDisable(fxmol == null);
136153
itemCopy3D.setOnAction(e -> scene.copy3D(fxmol));
137154

138-
MenuItem itemCopy2D = new MenuItem("Molecule 2D");
155+
MenuItem itemCopy2D = new MenuItem("As 2D-Molecule");
139156
itemCopy2D.setDisable(fxmol == null);
140157
itemCopy2D.setOnAction(e -> scene.copy2D(fxmol));
141158

142-
MenuItem itemCopyIDCode = new MenuItem("Copy Molecule ID-Code");
159+
MenuItem itemCopyIDCode = new MenuItem("As ID-Code");
143160
itemCopyIDCode.setDisable(fxmol == null);
144-
itemCopyIDCode.setOnAction(e -> scene.copyIDCode(fxmol));
161+
itemCopyIDCode.setOnAction(e -> scene.copyAsIDCode(fxmol));
162+
163+
MenuItem itemCopyMolfileV2 = new MenuItem("As Molfile V2");
164+
itemCopyMolfileV2.setDisable(fxmol == null);
165+
itemCopyMolfileV2.setOnAction(e -> scene.copyAsMolfileV2(fxmol));
166+
167+
MenuItem itemCopyMolfileV3 = new MenuItem("As Molfile V3");
168+
itemCopyMolfileV3.setDisable(fxmol == null);
169+
itemCopyMolfileV3.setOnAction(e -> scene.copyAsMolfileV3(fxmol));
170+
171+
MenuItem itemCopySmiles = new MenuItem("As SMILES");
172+
itemCopySmiles.setDisable(fxmol == null);
173+
itemCopySmiles.setOnAction(e -> scene.copyAsSmiles(fxmol));
145174

146-
Menu menuCopy = new Menu("Copy");
147-
menuCopy.getItems().addAll(itemCopy3D, itemCopy2D, itemCopyIDCode);
175+
Menu menuCopy = new Menu("Copy Molecule");
176+
menuCopy.getItems().addAll(itemCopy3D, itemCopy2D, itemCopyIDCode, itemCopyMolfileV2, itemCopyMolfileV3, itemCopySmiles);
148177

149178
getItems().add(menuCopy);
150179
getItems().add(new SeparatorMenuItem());

src/main/java/org/openmolecules/fx/viewer3d/V3DScene.java

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -239,13 +239,31 @@ public void copy2D(V3DMolecule fxmol) {
239239
mClipboardHandler.copyMolecule(mol);
240240
}
241241

242-
public void copyIDCode(V3DMolecule fxmol) {
242+
public void copyAsIDCode(V3DMolecule fxmol) {
243243
mCopiedMol = fxmol;
244244
Canonizer canonizer = new Canonizer(fxmol.getMolecule());
245245
TextClipboardHandler.copyText(canonizer.getIDCode()+" "+canonizer.getEncodedCoordinates());
246246
}
247247

248248

249+
public void copyAsMolfileV2(V3DMolecule fxmol) {
250+
mCopiedMol = fxmol;
251+
TextClipboardHandler.copyText(new MolfileCreator(fxmol.getMolecule()).getMolfile());
252+
}
253+
254+
255+
public void copyAsMolfileV3(V3DMolecule fxmol) {
256+
mCopiedMol = fxmol;
257+
TextClipboardHandler.copyText(new MolfileV3Creator(fxmol.getMolecule()).getMolfile());
258+
}
259+
260+
261+
public void copyAsSmiles(V3DMolecule fxmol) {
262+
mCopiedMol = fxmol;
263+
TextClipboardHandler.copyText(new IsomericSmilesCreator(fxmol.getMolecule()).getSmiles());
264+
}
265+
266+
249267
public void paste() {
250268
StereoMolecule mol = mClipboardHandler.pasteMolecule(false, SmilesParser.SMARTS_MODE_IS_SMILES);
251269
if (mol == null) {
@@ -280,6 +298,7 @@ public void paste() {
280298
V3DMolecule fxmol = new V3DMolecule(mol, V3DMolecule.getNextID(), role);
281299
mCopiedMol = null;
282300
addMolecule(fxmol);
301+
optimizeView(fxmol);
283302
}
284303

285304

src/main/java/org/openmolecules/fx/viewerapp/ViewerApp.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -88,7 +88,7 @@ else if (sceneMode.contains(V3DScene.ViewerSettings.STEREO_HSBS)) {
8888
ColumnConstraints column2 = new ColumnConstraints();
8989
column2.setPercentWidth(50);
9090
stereoPane.getColumnConstraints().addAll(column1, column2);
91-
scene3D = new V3DScene(new Group(), INITIAL_WIDTH /2, INITIAL_HEIGHT, sceneMode);
91+
scene3D = new V3DScene(new Group(), INITIAL_WIDTH / 2f, INITIAL_HEIGHT, sceneMode);
9292
stereoPane.add(scene3D, 0, 0);
9393
RightEyeView cameraView = scene3D.buildRightEyeView();
9494
stereoPane.add(cameraView, 1, 0);
@@ -104,7 +104,7 @@ else if (sceneMode.contains(V3DScene.ViewerSettings.STEREO_HOU)) {
104104
RowConstraints row2 = new RowConstraints();
105105
row2.setPercentHeight(50);
106106
stereoPane.getRowConstraints().addAll(row1, row2);
107-
scene3D = new V3DScene(new Group(), INITIAL_WIDTH, INITIAL_HEIGHT /2, sceneMode);
107+
scene3D = new V3DScene(new Group(), INITIAL_WIDTH, INITIAL_HEIGHT / 2f, sceneMode);
108108
stereoPane.add(scene3D, 0, 0);
109109
RightEyeView cameraView = scene3D.buildRightEyeView();
110110
stereoPane.add(cameraView, 0, 1);

0 commit comments

Comments
 (0)