Add context menu item for exporting OBJ

This commit is contained in:
SiboVG 2023-08-18 04:16:54 +02:00
parent cb41a0ae85
commit 2eb9b039e9
3 changed files with 40 additions and 1 deletions

View File

@ -47,6 +47,8 @@ RocketActions.MoveUpAct.Moveup = Move up
RocketActions.MoveUpAct.ttip.Moveup = Move this component upwards.
RocketActions.MoveDownAct.Movedown = Move down
RocketActions.MoveDownAct.ttip.Movedown = Move this component downwards.
RocketActions.ExportOBJAct.ExportOBJ = Export as OBJ (.obj)
RocketActions.ExportOBJAct.ttip.ExportOBJ = Export the selected components as a Wavefront OBJ 3D file.
! RocketPanel
RocketPanel.FigTypeAct.SideView = Side view

View File

@ -255,6 +255,9 @@ public class BasicFrame extends JFrame {
popupMenu.addSeparator();
popupMenu.add(actions.getScaleAction());
popupMenu.addSeparator();
popupMenu.add(actions.getExportOBJAction());
}
createMenu();
@ -1647,7 +1650,7 @@ public class BasicFrame extends JFrame {
*
* @return true if the file was saved, false otherwise
*/
private boolean exportWavefrontOBJAction() {
public boolean exportWavefrontOBJAction() {
File file = openFileSaveAsDialog(FileType.WAVEFRONT_OBJ, getSelectedComponents());
if (file == null) {
return false;

View File

@ -77,6 +77,7 @@ public class RocketActions {
private final RocketAction scaleAction;
private final RocketAction moveUpAction;
private final RocketAction moveDownAction;
private final RocketAction exportOBJAction;
private static final Translator trans = Application.getTranslator();
private static final Logger log = LoggerFactory.getLogger(RocketActions.class);
@ -101,6 +102,7 @@ public class RocketActions {
this.scaleAction = new ScaleAction();
this.moveUpAction = new MoveUpAction();
this.moveDownAction = new MoveDownAction();
this.exportOBJAction = new ExportOBJAction();
OpenRocketClipboard.addClipboardListener(new ClipboardListener() {
@Override
@ -148,6 +150,7 @@ public class RocketActions {
scaleAction.clipboardChanged();
moveUpAction.clipboardChanged();
moveDownAction.clipboardChanged();
exportOBJAction.clipboardChanged();
}
@ -197,6 +200,10 @@ public class RocketActions {
return moveDownAction;
}
public Action getExportOBJAction() {
return exportOBJAction;
}
/**
* Tie an action to a JButton, without using the icon or text of the action for the button.
*
@ -1205,5 +1212,32 @@ public class RocketActions {
}
private class ExportOBJAction extends RocketAction {
private static final long serialVersionUID = 1L;
public ExportOBJAction() {
this.putValue(NAME, trans.get("RocketActions.ExportOBJAct.ExportOBJ"));
this.putValue(SMALL_ICON, Icons.EXPORT_3D);
this.putValue(SHORT_DESCRIPTION, trans.get("RocketActions.ExportOBJAct.ttip.ExportOBJ"));
clipboardChanged();
}
@Override
public void actionPerformed(ActionEvent e) {
List<RocketComponent> components = selectionModel.getSelectedComponents();
if (components.isEmpty()) {
return;
}
ComponentConfigDialog.disposeDialog();
parentFrame.exportWavefrontOBJAction();
}
@Override
public void clipboardChanged() {
List<RocketComponent> components = selectionModel.getSelectedComponents();
this.setEnabled(!components.isEmpty());
}
}
}