summaryrefslogtreecommitdiffstats
path: root/kdejava/koala/test/kbase/KBase.java
diff options
context:
space:
mode:
Diffstat (limited to 'kdejava/koala/test/kbase/KBase.java')
-rw-r--r--kdejava/koala/test/kbase/KBase.java596
1 files changed, 596 insertions, 0 deletions
diff --git a/kdejava/koala/test/kbase/KBase.java b/kdejava/koala/test/kbase/KBase.java
new file mode 100644
index 00000000..abbf784c
--- /dev/null
+++ b/kdejava/koala/test/kbase/KBase.java
@@ -0,0 +1,596 @@
+import java.util.*;
+
+import org.kde.qt.*;
+import org.kde.koala.*;
+
+/**
+ * The base class for JavaApiTest application windows. It sets up the main
+ * window and reads the config file as well as providing a menubar, toolbar
+ * and statusbar. An instance of KBaseView creates your center view, which is connected
+ * to the window's Doc object.
+ * KBase reimplements the methods that KMainWindow provides for main window handling and supports
+ * full session management as well as using KActions.
+ * @see KMainWindow
+ * @see KApplication
+ * @see KConfig
+ *
+ * @author Source Framework Automatically Generated by KDevelop, (c) The KDevelop Team.
+ * @version KDevelop version 1.2 code generation
+ */
+public class KBase extends KMainWindow
+{
+ public static final int ID_STATUS_MSG = 1;
+
+ /** the configuration object of the application */
+ private KConfig config;
+ /** view is the main widget which represents your working area. The View
+ * class should handle all events of the view widget. It is kept empty so
+ * you can create your view according to your application's needs by
+ * changing the view class.
+ */
+ private KBaseView view;
+ /** doc represents your actual document and is created only once. It keeps
+ * information such as filename and does the serialization of your files.
+ */
+ private KBaseDoc doc;
+
+ // KAction references to enable/disable actions
+ private KAction fileNewWindow;
+ private KAction fileNew;
+ private KAction fileOpen;
+ private KRecentFilesAction fileOpenRecent;
+ private KAction fileSave;
+ private KAction fileSaveAs;
+ private KAction fileClose;
+ private KAction filePrint;
+ private KAction fileQuit;
+ private KAction editCut;
+ private KAction editCopy;
+ private KAction editPaste;
+ private KToggleAction viewToolBar;
+ private KToggleAction viewStatusBar;
+
+ /** construtor of KBase, calls all init functions to create the application.
+ */
+public KBase(QWidget parent, String name)
+{
+ super(parent, name, 0);
+ KApplication kapp = KApplication.kApplication();
+ config=kapp.config();
+
+ ///////////////////////////////////////////////////////////////////
+ // call inits to invoke all other construction parts
+ initStatusBar();
+ initActions();
+ initDocument();
+ initView();
+
+ readOptions();
+
+ ///////////////////////////////////////////////////////////////////
+ // disable actions at startup
+ fileSave.setEnabled(false);
+ fileSaveAs.setEnabled(false);
+ filePrint.setEnabled(false);
+ editCut.setEnabled(false);
+ editCopy.setEnabled(false);
+ }
+
+public KBase()
+{
+ this(null, null);
+}
+
+ /** initializes the KActions of the application */
+protected void initActions()
+{
+ fileNewWindow = new KAction(tr("New &Window"), "", new KShortcut(), this, SLOT("slotFileNewWindow()"), actionCollection(),"file_new_window");
+ fileNew = KStdAction.openNew(this, SLOT("slotFileNew()"), actionCollection());
+ fileOpen = KStdAction.open(this, SLOT("slotFileOpen()"), actionCollection());
+ fileOpenRecent = (KRecentFilesAction) KStdAction.openRecent(this, SLOT("slotFileOpenRecent(KURL)"), actionCollection());
+ fileSave = KStdAction.save(this, SLOT("slotFileSave()"), actionCollection());
+ fileSaveAs = KStdAction.saveAs(this, SLOT("slotFileSaveAs()"), actionCollection());
+ // this one crashes for me...
+// fileClose = KStdAction.close(this, SLOT(slotFileClose()), actionCollection());
+ filePrint = KStdAction.print(this, SLOT("slotFilePrint()"), actionCollection());
+ fileQuit = KStdAction.quit(this, SLOT("slotFileQuit()"), actionCollection());
+ editCut = KStdAction.cut(this, SLOT("slotEditCut()"), actionCollection());
+ editCopy = KStdAction.copy(this, SLOT("slotEditCopy()"), actionCollection());
+ editPaste = KStdAction.paste(this, SLOT("slotEditPaste()"), actionCollection());
+ createStandardStatusBarAction();
+// viewToolBar = KStdAction.showToolbar(this, SLOT("slotViewToolBar()"), actionCollection());
+ viewStatusBar = KStdAction.showStatusbar(this, SLOT("slotViewStatusBar()"), actionCollection());
+
+ fileNewWindow.setToolTip(tr("Opens a new application window"));
+ fileNew.setToolTip(tr("Creates a new document"));
+ fileOpen.setToolTip(tr("Opens an existing document"));
+ fileOpenRecent.setToolTip(tr("Opens a recently used file"));
+ fileSave.setToolTip(tr("Saves the actual document"));
+ fileSaveAs.setToolTip(tr("Saves the actual document as..."));
+// fileClose.setToolTip(tr("Closes the actual document"));
+ filePrint .setToolTip(tr("Prints out the actual document"));
+ fileQuit.setToolTip(tr("Quits the application"));
+ editCut.setToolTip(tr("Cuts the selected section and puts it to the clipboard"));
+ editCopy.setToolTip(tr("Copies the selected section to the clipboard"));
+ editPaste.setToolTip(tr("Pastes the clipboard contents to actual position"));
+// viewToolBar.setToolTip(tr("Enables/disables the toolbar"));
+ viewStatusBar.setToolTip(tr("Enables/disables the statusbar"));
+
+ // use the absolute path to your kbaseui.rc file for testing purpose in createGUI();
+ createGUI();
+
+}
+
+
+
+ /** sets up the kstatusBar for the main window by initialzing a statuslabel.
+ */
+protected void initStatusBar()
+{
+ ///////////////////////////////////////////////////////////////////
+ // STATUSBAR
+ // TODO: add your own items you need for displaying current application status.
+ kstatusBar().insertItem(tr("Ready."), ID_STATUS_MSG);
+}
+
+ /** initializes the document object of the main window that is connected to the view in initView().
+ * @see initView();
+ */
+public void initDocument()
+{
+ doc = new KBaseDoc(this, null);
+ doc.newDocument();
+}
+
+ /** creates the centerwidget of the KTMainWindow instance and sets it as the view
+ */
+protected void initView()
+{
+ ////////////////////////////////////////////////////////////////////
+ // create the main widget here that is managed by KTMainWindow's view-region and
+ // connect the widget to your document to display document contents.
+
+ view = new KBaseView(this, null);
+ doc.addView(view);
+ setCentralWidget(view);
+ setCaption(doc.URL().fileName(),false);
+
+}
+
+ /** opens a file specified by commandline option
+ */
+public void openDocumentFile(KURL url)
+{
+ slotStatusMsg(tr("Opening file..."));
+
+// doc.openDocument( url);
+ fileOpenRecent.addURL( url );
+ slotStatusMsg(tr("Ready."));
+}
+
+public void openDocumentFile()
+{
+ openDocumentFile(new KURL(""));
+ return;
+}
+
+
+ /** returns a pointer to the current document connected to the KTMainWindow instance and is used by
+ * the View class to access the document object's methods
+ */
+public KBaseDoc getDocument()
+{
+ return doc;
+}
+
+ /** save general Options like all bar positions and status as well as the geometry and the recent file list to the configuration
+ * file
+ */
+protected void saveOptions()
+{
+ config.setGroup("General Options");
+ config.writeEntry("Geometry", size());
+// config.writeEntry("Show Toolbar", viewToolBar.isChecked());
+ config.writeEntry("Show Statusbar",viewStatusBar.isChecked());
+// config.writeEntry("ToolBarPos", (int) toolBar("mainToolBar").barPos());
+ fileOpenRecent.saveEntries(config,"Recent Files");
+}
+
+
+ /** read general Options again and initialize all variables like the recent file list
+ */
+protected void readOptions()
+{
+
+ config.setGroup("General Options");
+
+ // bar status settings
+// boolean bViewToolbar = config.readBoolEntry("Show Toolbar", true);
+// viewToolBar.setChecked(bViewToolbar);
+// slotViewToolBar();
+
+ boolean bViewStatusbar = config.readBoolEntry("Show Statusbar", true);
+ viewStatusBar.setChecked(bViewStatusbar);
+ slotViewStatusBar();
+
+
+ // bar position settings
+// int toolBarPos;
+ //Pos=(int) config.readNumEntry("ToolBarPos", KToolBar.Top);
+// toolBar("mainToolBar").setBarPos(toolBarPos);
+
+ // initialize the recent file list
+ fileOpenRecent.loadEntries(config,"Recent Files");
+
+ QSize size=config.readSizeEntry("Geometry", null);
+ if(!size.isEmpty())
+ {
+ resize(size);
+ }
+}
+
+ /** saves the window properties for each open window during session end to the session config file, including saving the currently
+ * opened file by a temporary filename provided by KApplication.
+ * @see KTMainWindow#saveProperties
+ */
+protected void saveProperties(KConfig _cfg)
+{
+ if(doc.URL().fileName()!=tr("Untitled") && !doc.isModified())
+ {
+ // saving to tempfile not necessary
+
+ }
+ else
+ {
+ KURL url=doc.URL();
+ _cfg.writeEntry("filename", url.url());
+ _cfg.writeEntry("modified", doc.isModified());
+ String tempname = KApplication.kApplication().tempSaveName(url.url());
+ String tempurl= KURL.encode_string(tempname, 0);
+ KURL _url = new KURL(tempurl);
+ doc.saveDocument(_url);
+ }
+}
+
+
+ /** reads the session config file and restores the application's state including the last opened files and documents by reading the
+ * temporary files saved by saveProperties()
+ * @see KTMainWindow#readProperties
+ */
+protected void readProperties(KConfig _cfg)
+{
+ String filename = _cfg.readEntry("filename", "");
+ KURL url = new KURL(filename);
+ boolean modified = _cfg.readBoolEntry("modified", false);
+ if(modified)
+ {
+ boolean canRecover = false;
+ String tempname = KApplication.kApplication().checkRecoverFile(filename, canRecover);
+ KURL _url = new KURL(tempname);
+
+ if(canRecover)
+ {
+ doc.openDocument(_url);
+ doc.setModified();
+ setCaption(_url.fileName(),true);
+ QFile.remove(tempname);
+ }
+ }
+ else
+ {
+ if(filename.length() > 0)
+ {
+ doc.openDocument(url);
+ setCaption(url.fileName(),false);
+ }
+ }
+}
+
+ /** queryClose is called by KTMainWindow on each closeEvent of a window. Against the
+ * default implementation (only returns true), this calles saveModified() on the document object to ask if the document shall
+ * be saved if Modified; on cancel the closeEvent is rejected.
+ * @see KTMainWindow#queryClose
+ * @see KTMainWindow#closeEvent
+ */
+protected boolean queryClose()
+{
+ return doc.saveModified();
+}
+
+ /** queryExit is called by KTMainWindow when the last window of the application is going to be closed during the closeEvent().
+ * Against the default implementation that just returns true, this calls saveOptions() to save the settings of the last window's
+ * properties.
+ * @see KTMainWindow#queryExit
+ * @see KTMainWindow#closeEvent
+ */
+protected boolean queryExit()
+{
+ saveOptions();
+ return true;
+}
+
+/////////////////////////////////////////////////////////////////////
+// SLOT IMPLEMENTATION
+/////////////////////////////////////////////////////////////////////
+
+ /** open a new application window by creating a new instance of KBase */
+public void slotFileNewWindow()
+{
+ slotStatusMsg(tr("Opening a new application window..."));
+
+ KBase new_window= new KBase();
+ new_window.show();
+
+ slotStatusMsg(tr("Ready."));
+}
+
+ /** clears the document in the actual view to reuse it as the new document */
+public void slotFileNew()
+{
+ slotStatusMsg(tr("Creating new document..."));
+
+ if(!doc.saveModified())
+ {
+ // here saving wasn't successful
+
+ }
+ else
+ {
+ doc.newDocument();
+ setCaption(doc.URL().fileName(), false);
+ }
+
+ slotStatusMsg(tr("Ready."));
+}
+
+ /** open a file and load it into the document*/
+public void slotFileOpen()
+{
+System.out.println("ENTER slotFileOpen()");
+ slotStatusMsg(tr("Opening file..."));
+
+ if(!doc.saveModified())
+ {
+ // here saving wasn't successful
+
+ }
+ else
+ {
+ KURL url=KFileDialog.getOpenURL("",
+ tr("*|All files"), this, tr("Open File..."));
+ if(!url.isEmpty())
+ {
+ doc.openDocument(url);
+ setCaption(url.fileName(), false);
+ fileOpenRecent.addURL( url );
+ }
+ }
+ slotStatusMsg(tr("Ready."));
+}
+
+ /** opens a file from the recent files menu */
+public void slotFileOpenRecent(KURL url)
+{
+ slotStatusMsg(tr("Opening file..."));
+
+ if(!doc.saveModified())
+ {
+ // here saving wasn't successful
+ }
+ else
+ {
+ doc.openDocument(url);
+ setCaption(url.fileName(), false);
+ }
+
+ slotStatusMsg(tr("Ready."));
+}
+
+ /** save a document */
+public void slotFileSave()
+{
+ slotStatusMsg(tr("Saving file..."));
+
+ doc.saveDocument(doc.URL());
+
+ slotStatusMsg(tr("Ready."));
+}
+
+ /** save a document by a new filename*/
+public void slotFileSaveAs()
+{
+ slotStatusMsg(tr("Saving file with a new filename..."));
+
+ KURL url=KFileDialog.getSaveURL(QDir.currentDirPath(),
+ tr("*|All files"), this, tr("Save as..."));
+ if(!url.isEmpty())
+ {
+ doc.saveDocument(url);
+ fileOpenRecent.addURL(url);
+ setCaption(url.fileName(),doc.isModified());
+ }
+
+ slotStatusMsg(tr("Ready."));
+}
+
+ /** asks for saving if the file is modified, then closes the actual file and window*/
+public void slotFileClose()
+{
+ slotStatusMsg(tr("Closing file..."));
+
+ close();
+
+ slotStatusMsg(tr("Ready."));
+}
+
+ /** print the actual file */
+public void slotFilePrint()
+{
+ slotStatusMsg(tr("Printing..."));
+
+ QPrinter printer = new QPrinter();
+ if (printer.setup(this))
+ {
+ view.print(printer);
+ }
+
+ slotStatusMsg(tr("Ready."));
+}
+
+ /** closes all open windows by calling close() on each memberList item until the list is empty, then quits the application.
+ * If queryClose() returns false because the user canceled the saveModified() dialog, the closing breaks.
+ */
+public void slotFileQuit()
+{
+ slotStatusMsg(tr("Exiting..."));
+ saveOptions();
+ // close the first window, the list makes the next one the first again.
+ // This ensures that queryClose() is called on each window to ask for closing
+ KMainWindow w;
+ Iterator it = memberList().iterator();
+ while(it.hasNext())
+ {
+ w=(KMainWindow)it.next();
+ // only close the window if the closeEvent is accepted. If the user presses Cancel on the saveModified() dialog,
+ // the window and the application stay open.
+ if(!w.close())
+ break;
+ }
+
+ slotStatusMsg(tr("Ready."));
+}
+
+ /** put the marked text/object into the clipboard and remove
+ * it from the document
+ */
+public void slotEditCut()
+{
+ slotStatusMsg(tr("Cutting selection..."));
+
+ slotStatusMsg(tr("Ready."));
+}
+
+ /** put the marked text/object into the clipboard
+ */
+public void slotEditCopy()
+{
+ slotStatusMsg(tr("Copying selection to clipboard..."));
+
+ slotStatusMsg(tr("Ready."));
+}
+
+ /** paste the clipboard into the document
+ */
+public void slotEditPaste()
+{
+ slotStatusMsg(tr("Inserting clipboard contents..."));
+
+ slotStatusMsg(tr("Ready."));
+}
+
+ /** toggles the toolbar
+ */
+public void slotViewToolBar()
+{
+ slotStatusMsg(tr("Toggling toolbar..."));
+ ///////////////////////////////////////////////////////////////////
+ // turn Toolbar on or off
+// if(!viewToolBar.isChecked())
+// {
+// toolBar("mainToolBar").hide();
+// }
+// else
+// {
+// toolBar("mainToolBar").show();
+// }
+
+ slotStatusMsg(tr("Ready."));
+}
+
+ /** toggles the statusbar
+ */
+public void slotViewStatusBar()
+{
+ slotStatusMsg(tr("Toggle the statusbar..."));
+ ///////////////////////////////////////////////////////////////////
+ //turn Statusbar on or off
+ if(!viewStatusBar.isChecked())
+ {
+ kstatusBar().hide();
+ }
+ else
+ {
+ kstatusBar().show();
+ }
+
+ slotStatusMsg(tr("Ready."));
+}
+
+
+ /** changes the statusbar contents for the standard label permanently, used to indicate current actions.
+ * @param text the text that is displayed in the statusbar
+ */
+public void slotStatusMsg(String text)
+{
+ ///////////////////////////////////////////////////////////////////
+ // change status message permanently
+ kstatusBar().clear();
+ kstatusBar().changeItem(text, ID_STATUS_MSG);
+}
+
+static String description =
+ "JavaApiTest";
+// INSERT A DESCRIPTION FOR YOUR APPLICATION HERE
+
+
+static String[][] options =
+{
+ { "+[File]", "file to open", null }
+ // INSERT YOUR COMMANDLINE OPTIONS HERE
+};
+
+static String VERSION = "0.1";
+
+public static void main(String[] cmdLineArgs)
+{
+
+ KAboutData aboutData = new KAboutData( "kbase", "JavaApiTest",
+ VERSION, description, KAboutData.License_GPL,
+ "(c) 2001, Richard Dale");
+ aboutData.addAuthor("Richard Dale",null, "Lost_Highway@tipitina.demon.co.uk");
+ KCmdLineArgs.init( cmdLineArgs, aboutData );
+ KCmdLineArgs.addCmdLineOptions( options ); // Add our own options.
+
+ KApplication app = new KApplication();
+
+ if (app.isRestored())
+ {
+ RESTORE("KBase");
+ }
+ else
+ {
+ KBase kbase = new KBase();
+ kbase.show();
+ KCmdLineArgs args = KCmdLineArgs.parsedArgs();
+
+ if (args.count() > 0)
+ {
+ kbase.openDocumentFile(new KURL(args.arg(0)));
+ }
+ else
+ {
+ kbase.openDocumentFile();
+ }
+ args.clear();
+ }
+
+ app.exec();
+ return;
+}
+
+ static {
+ qtjava.initialize();
+ kdejava.initialize();
+ }
+
+}