Kaydet (Commit) 3ab2d3a2 authored tarafından Noel Grandin's avatar Noel Grandin

fdo#88256 fix crash when running javascript macro

caused by my commit 8583da1e
"java: remove unused fields"

Change-Id: Ibcd6462e8229a0a6cb98ebfd16ce5d2ea45ca931
üst b6013382
......@@ -4527,10 +4527,6 @@ dnl Check for syslog header
dnl ===================================================================
AC_CHECK_HEADER(syslog.h, AC_DEFINE(HAVE_SYSLOG_H))
# placeholder for future crash reporter feature
ENABLE_CRASHDUMP=""
AC_SUBST(ENABLE_CRASHDUMP)
dnl Set the ENABLE_WERROR variable. (Activate --enable-werror)
dnl ===================================================================
AC_MSG_CHECKING([whether to turn warnings to errors])
......
......@@ -55,6 +55,11 @@ public class ParcelBrowseNode extends PropertySet implements
private Collection<XBrowseNode> browsenodes;
private final ParcelContainer container;
private Parcel parcel;
// these four are properties, they are accessed via reflection
public boolean deletable = true;
public boolean editable = false;
public boolean creatable = false;
public boolean renamable = true;
public ParcelBrowseNode(ScriptProvider provider, ParcelContainer container,
String parcelName) {
......@@ -75,15 +80,28 @@ public class ParcelBrowseNode extends PropertySet implements
registerProperty("Editable", new Type(boolean.class), (short)0, "editable");
registerProperty("Creatable", new Type(boolean.class), (short)0, "creatable");
registerProperty("Renamable", new Type(boolean.class), (short)0, "renamable");
if (provider.hasScriptEditor())
{
this.creatable = true;
}
String parcelDirUrl = parcel.getPathToParcel();
XComponentContext xCtx = provider.getScriptingContext().getComponentContext();
XMultiComponentFactory xFac = xCtx.getServiceManager();
try {
UnoRuntime.queryInterface(XSimpleFileAccess.class,
XSimpleFileAccess xSFA = UnoRuntime.queryInterface(XSimpleFileAccess.class,
xFac.createInstanceWithContext(
"com.sun.star.ucb.SimpleFileAccess",
xCtx));
if ( xSFA != null && ( xSFA.isReadOnly( parcelDirUrl ) ||
container.isUnoPkg() ) )
{
deletable = false;
editable = false;
creatable = false;
renamable = false;
}
} catch (com.sun.star.uno.Exception e) {
// TODO propagate potential errors
LogUtils.DEBUG("Caught exception creating ParcelBrowseNode " + e);
......
......@@ -37,6 +37,9 @@ public class PkgProviderBrowseNode extends ProviderBrowseNode {
container.getParcelContainerDir());
LogUtils.DEBUG("*** PkgProviderBrowseNode ctor, container has num parcels = " +
container.getElementNames().length);
deletable = false;
editable = false;
creatable = false;
}
@Override public String getName() {
......
......@@ -52,6 +52,10 @@ public class ProviderBrowseNode extends PropertySet implements
private final String name;
protected ParcelContainer container;
private final XComponentContext m_xCtx;
// these are properties, they are accessed by reflection
public boolean deletable = true;
public boolean creatable = true;
public boolean editable = false;
public ProviderBrowseNode(ScriptProvider provider, ParcelContainer container,
XComponentContext xCtx) {
......@@ -68,10 +72,15 @@ public class ProviderBrowseNode extends PropertySet implements
XMultiComponentFactory xFac = m_xCtx.getServiceManager();
try {
UnoRuntime.queryInterface(XSimpleFileAccess.class,
XSimpleFileAccess xSFA = UnoRuntime.queryInterface(XSimpleFileAccess.class,
xFac.createInstanceWithContext(
"com.sun.star.ucb.SimpleFileAccess",
xCtx));
if ( container.isUnoPkg() || xSFA.isReadOnly( container.getParcelContainerDir() ) )
{
deletable = false;
creatable = false;
}
}
// TODO propage errors
catch (com.sun.star.uno.Exception e) {
......
......@@ -58,25 +58,32 @@ public class ScriptBrowseNode extends PropertySet implements
private Parcel parent;
private String name;
private boolean editable;
private boolean deletable = false;
private boolean renamable = false;
// these are properties, accessed by reflection
public String uri;
public String description;
public boolean editable;
public boolean deletable = false;
public boolean renamable = false;
public ScriptBrowseNode(ScriptProvider provider, Parcel parent, String name) {
this.provider = provider;
this.name = name;
this.parent = parent;
ScriptMetaData data = null;
XComponentContext xCtx = provider.getScriptingContext().getComponentContext();
XMultiComponentFactory xFac = xCtx.getServiceManager();
try {
data = (ScriptMetaData)parent.getByName( name );
XSimpleFileAccess xSFA = UnoRuntime.queryInterface(
XSimpleFileAccess.class,
xFac.createInstanceWithContext(
"com.sun.star.ucb.SimpleFileAccess",
xCtx));
uri = data.getShortFormScriptURL();
description = data.getDescription();
if (provider.hasScriptEditor()) {
this.editable = true;
......@@ -147,7 +154,9 @@ public class ScriptBrowseNode extends PropertySet implements
LogUtils.DEBUG("** caught exception getting script data for " + name +
" ->" + e.toString());
}
uri = data.getShortFormScriptURL();
}
// implementation of XInvocation interface
public XIntrospectionAccess getIntrospection() {
return null;
......@@ -250,6 +259,7 @@ public class ScriptBrowseNode extends PropertySet implements
LogUtils.DEBUG("Now remove old script");
parent.removeByName(name);
uri = data.getShortFormScriptURL();
name = languageName;
result = new Any(new Type(XBrowseNode.class), this);
} catch (NoSuchElementException nse) {
......
......@@ -44,13 +44,16 @@ public class ScriptContext extends PropertySet implements XScriptContext {
private final static String DOC_URI = "SCRIPTING_DOC_URI";
private final XModel m_xModel;
public final XModel m_xModel;
private final XScriptInvocationContext m_xInvocationContext;
private final XDesktop m_xDeskTop;
private final XComponentContext m_xComponentContext;
// property, accessed via reflection
public String m_sDocURI = null;
private ScriptContext(XComponentContext xmComponentContext, XDesktop xDesktop,
XModel xModel, XScriptInvocationContext xInvocContext) {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment