Composer Plug-in SDK Release Notes
Copyright (C) 1997 Netscape Communications, Inc. All
Rights Reserved
Version 26
4/29/97
Jack Palevich x6701 palevich@netscape.com
Introduction
The Composer Plug-in SDK allows you to develop plug-ins for Netscape Composer.
Please refer to the on-line documentation, the sample plugins, and the
developer's
guide for more information.
What's New
Version 26 (For Netscape Communicator 4.0PR4)
-
Added a new method, public static void Document.editDocument(String
documentURL). This method lets you open an arbitrary URL for editing. This
method is asynchronous. It does not return any status. You can use it to
programatically open an arbitrary URL for editing by the user. You don't
even have to be in a Composer Plug-in when you call the method. You can
call it from an applette, or JavaScript, or wherever.
-
Added a sample plug-in, EditHomePage, that shows how to use Document.editDocument.
-
Added a sample plug-in, RedirectTest, that shows how to redirect "edit"
requests.
-
You must now use JDK 1.1, or a JDK 1.1 compatable IDE such as Symantec
Cafe 1.5.1 with the 1.1 Preview, to develop Composer Plug-ins.
-
Removed fakejava.zip -- it is not needed now that JDK 1.1 is required.
-
Updated the DocInfo and IFCTest samples to use the JDK 1.1 standard
API for ResourceBundles and Character.IsWhiteSpace.
-
Updated the AddButton sample to ask for the UniversalConnect privilege.
(This principle is required in order to read from a URL.)
-
Note that JDK 1.1 will issue depricated interface warnings when compiling
some of the samples. If you attempt to fix these warnings, you may run
into trouble. The reason is that some of the new JDK 1.1 methods (especially
new features of AWT 1.1) are not supported by Communicator 4.0. When in
doubt, stick to AWT 1.0 features.
Version 25
-
Two new methods have been added to Document: getText and setText. These
convenience methods allow you to get and set the whole raw HTML text of
the document. This makes it easier to write Composer Plug-ins that perform
operations on the raw HTML text.
-
The EditRaw and IFCTest sample plug-ins have been updated to use Document.getText
and Document.setText. About 10 lines were saved in each sample.
Version 24 (For Netscape Communicator 4.0 PR3)
-
You can now create and use jar files instead of zip files to hold your
Composer Plug-in classes. Using .zip files will continue to work. However,
the benefits of jar files are:
-
Since they don't end in .zip, users won't be tempted to unzip them.
-
They are clearly identified as Java files, rather than generic archive
files.
-
They can be compressed. (However, this feature is not working for Composer
4.0 PR3.)
-
They can be signed. For more information, look at the Java signing
and security release notes for PR3.
-
Communicator 4.0 has a new security model for Java code. When you want
to do something special, you ask the netscape security manager for permission.
It, in turn, asks the user for permission. If the user grants you the permission,
your code is free perform the action.
-
The AddApplet and AddButton sample Composer Plug-ins have been enhanced
to use this new security model.
-
The Composer Plug-in kit's classes.zip file now includes a stub version
of the class netscape.security.SecurityManager. This will allow you to
use your existing Java development environment to write code that calls
the SecurityManager.
-
If your plug-in needs to read or write files, or load a dynamic library,
or otherwise do something that might be dangerous, you will have to upgrade
to this new security model.For more information, look at the Java signing
and security release notes for PR3.
-
The pre-built sample plug-ins, cpTest.jar, now come as a jar file instead
of a zip file.
Version 23
-
The bug where the plug-in's window comes up behind the Composer's window
has been fixed. The fix is for plug-ins to call requestFocus() after they
call show(). The samples AddLayer, DocInfo and EditRaw have been updated
to include this fix.
-
The Java 1.1 classes that used to be in classes.zip have been moved
to a seperate zip file, fakejava11.zip. If you are developing under JDK
1.0.2, include both classes.zip and fakejava11.zip in your classpath. If
you are developing under JDK 1.1, only include classes.zip.
-
The Test framework's -in option now works again. It was broken because
it was using FileReader, which does not appear to work under JDK 1.0.2.
-
An event model has been added to Composer Plug-ins. This event model,
which will work with Communicator PR3, allows you to write a Plug-in that
can automaticly perform actions when certain events occur. Check the javadoc
and regular documentation for Plugin and for Document for more information.
-
The source code for the test framework classes is now included in the
SDK.
-
A sample Composer Plug-in .ZIP file, cpTest.zip, is now included in
the SDK. If you are having trouble packaging your plug-in, compare the
cpTest.zip file to your own zip file. This should help you see what's wrong.
Version 22
-
Fixed mistakes in AddApplets comments.
-
Added dialog.dispose() calls to each of the samples that uses AWT dialogs.
This cleans up any native OS resources (such as native windows) that the
dialogs might be using.
Version 21
-
Various small improvements have been made to the sample plug-ins.
-
The IFCTest plug-in is now lets you edit HTML text. IFCTest is just
like EditRaw, except that EditRaw uses the AWT, while IFCTest uses AWT.
You can compare the two plug-ins to see the differences between the two
toolkits.
-
The window close boxes now work correctly in all the sample plug-ins.
-
The AddApplet sample now calls itself "Insert:Nervous Text", which
is what it does.
-
The DocumentInfo plug-in's OK button has been removed, since the close
box serves the same purpose.
-
The Composer Plug-in kit now comes with a dummy version of java.lang.SecurityManager.
This is required so that you can compile code that calls SecurityManager.setScopePermission.
SetScopePermission is a feature of the Netscape Communicator security model.
You will have to call it if your plug-in is planning on using privilidged
methods. For example, the following code needs to be used to load a library:
-
-
SecurityManager.setScopePermission();
-
System.loadLibrary(...);
-
SecurityManager.resetScopePermission();
-
The call to setScopePermission annotates the current stack frame to
allow it to make privileged calls.
Version 20
-
The image encoder test now creates a test image that's 512 x 512 pixels.
This is large enough to help identify performace issues with your image
encoder.
Version 19
-
Fixed bugs related to selection comments. Added the "stickyAfter" concept.
This is an obscure feature of selections that most developers can safely
ignore. We added it for completeness, so that all the editor's state was
represented in the Document object.
-
Added an Internationalization Issues section
at the bottom of these notes.
Version 18
-
Removed getAbout() methods from Plugin and ImageEncoder. Developers
wishing to provide about boxes should implement the functionality themselves.
(For example, you could add a button to your dialog box that brings up
an about box.)
Version 17
-
Added a new class, netscape.plugin.composer.ImageEncoder. Image encoders
extend the kinds of image file formats that Composer can write. Your Composer
Plug-in can also find and use existing image encoders to write image files.
See the javadoc for ImageEncoder for more information.
-
Added a sample ImageEncoder called TextImageEncoder.
-
Added a test framework, TestImageEncoder, for testing image encoders.
-
Added a new sample Composer Plug-in, AddApplet, which documents how
to use the LOCALDATA property to add arbitrary local data files to a Composer
document.
Version 16
Version 15
-
The classes directory now includes all the JDK 1.1 internationalization
and character reader/writer classes required to create plugins. So you
can develop using a JDK 1.0.2 compatible development environment.
-
The examples have been downgraded to work with JDK 1.0.2. You will
get some 'deprecated' warnings when you compile under JDK 1.1.
Version 14
-
Added missing classes TestDocumentReader and TestDocumentWriter.
-
DocInfo example now uses JDK1.1 style resource bundles.
-
Entity.entities added. This method returns an enumeration of known
entities.
Version 13
-
Fixed race condition in EditRaw.
-
Did minor cleanup of EditRaw.
-
Started AddLayer sample.
Version 12
-
Fixed -in option of navigator.test.plugin.composer.Test.
-
Renamed SelectedHTMLStream to SelectedHTMLReader.
-
Updated code to use JDK 1.1 Beta 2 classes. Primarily this meant converting
from CharInputStream to Reader and CharOutputStream to Writer.
-
Use Java 1.1 version of javadoc.
Version 11
-
Added class netscape.plugin.composer.io.SelectedHTMLStream.
-
Reworked selection-modifying plugins to use SelectedHTMLStream.
-
Removed some debugging printlns.
Version 10
-
Added IFCTest example of how to use the IFC from a plugin.
-
Factory.getPlugins now returns an Enumeration instead of a Vector.
Version 9
-
Added Test.perform() to simplify testing. It is now easier to test
your plugin from within an IDE such as Symantec Cafe.
-
Test.test() now calls System.exit. This ensures that the test terminates,
even if the plugin or the awt has left threads running.
-
Fixed word count in DocInfo sample.
-
Added more information to the DocInfo sample -- now it prints out the
base URL, the working directory, and the working directory URL.
Version 8
-
Renamed Plugin1 to TagStrip
-
Renamed Plugin2 to EditRaw
-
Renamed Plugin3 to Colorize
-
Added missing Test*Stream classes so that the SDK's test actually
works.
-
Minor javadoc documentation improvements.
Version 7
Samples:
-
A new sample plugin: AddButton, which shows how to add an image to
a document.
-
A new sample plugin: DocumentInfo, which shows how to access relative
and absolute image URLs.
-
Upgraded Plugin2 to show how to implement an "Apply" dialog button.
API changes:
-
Now requires Java 1.1 - Uses CharInputStream, CharOutputStream.
-
Removed all attempts to help with internationalization. You should
use the Java 1.1 ResourceBundle framework.
-
netscape.plugin.composer.Document - The document text is now accessed
via Char streams, rather than String objects.
-
netscape.plugin.composer.io - The Unicode stream classes have been
removed in favor of the standard Java 1.1 Char streams.
-
netscape.plugin.composer.Plugin - perform now returns a boolean result.
"True" means the plugin succeeded. "False" means the plugin failed.
Test changes:
-
The test now allows you to set both the input file and the output
file. This allows you to capture the output of the test.
Documentation changes:
-
The JavaDoc images are now supplied with the documentation, which should
make the documentation easier to read.
Notes
Plug-ins created with this API will work with Netscape Communicator b2.
They will not work with Communicator pre-release 1, because that version
of the Communicator uses an earlier version of the Composer Plug-in API.
We are not supporting Composer Plugins on Communicator 4.0 pre-release
1.
Internationalization Issues
The intention is that you will use the Java 1.1 internationalization classes
to internationalize your composer plug-in API. Unfortunately, Java 1.1
is still in beta, and so not all of the necessary classes are available
for you to use. There are several issues here:
-
The JDK 1.1 classes are still being defined, so they are buggy and
their API may change.
-
Most Java IDEs support JDK 1.0.2, and so do not contain any of the
JDK 1.1 classes.
-
Netscape Communicator version 4.0b2 doesn't have the full JDK 1.1 internationalization
classes.
We suggest that you do the following:
-
Write your UI using the new JDK 1.1 ResourceBundle classes. By putting
your resource strings in a resource bundle, you will make it easier to
internationalize your plugin.
-
Look at the DocumentInfo sample plug-in. This shows you the style you
should follow when using the ResourceBundle class. If you stick to this
subset of the full ResourceBundle functionality, your plug-in will work,
and will be easy to port to the final JDK 1.1 interfaces.
-
We have provided a JDK 1.0.2 compatable version of the ResourceBundle
classes in the Composer Plug-in Kit. This means that you can develop your
plug-in using a JDK1.0.2 IDE, such as Symantec Visual Cafe.
-
Expect to have to slightly tweak your use of resource bundles before
Communicator 4.0 goes final.