Make an inserted component in JTextPane not deletable ?

Hi all,
I insert some buttons in my JTextPane and of course I have to make them not eraseable, it is said that when they are inserted, they cannot be deleted by pressing the delete key. How can I do this ? Can I set some portion in a JTextPane not editable and another portion editable ?
Thanks

You have to extend document and override remove(int offset, int length) method. In the method just check whether specified (by offset and length) part of the document contains component. If not call super.remove() in other cases just return.
regards
Stas

Similar Messages

  • Inserting Component in JTextPane

    hai
    I have a problem while inserting components in JTextPane
    i first inserted text using insertString() function and then a JLabel using
    insertComponent() function but the Label is appearing before the text.
    This is the case with any of the component that is being added
    The components are being added before the text
    can someone tell me a solution by which the components appear in the order they
    were added
    Thanking you in anticipation

    u r inserting the component at the 0 caret position, so as ur need set the caret position where u want to insert the component like..
    textPane.setText("Hello");
    textPane.setCaretPosition(5);
    textPane.insertComponent(new JLabel("World"));

  • ComponentView does not redraw component in JTextPane Cell Rend

    We have created a JTable implementation that uses JTextPanes as cell renderers/editors so that text styles and the like are available. We want insert a component, such as a JButton, into the JTextPane. However, the component is only visible when the cell is in an editable state. In the renderer, the ComponentView looks like it has set aside the space where the component is to be, but the component is not visible.
    I have looked at this problem for several days now, and have only determined that this seems to be occuring at a low level. What I have found is that the ButtonUI's update method is not called when the document is in the cell renderer, while it seems called continuously in the cell editor (on each caret blink).
    Does anybody have any insight as to the problem? I have submitted this as a bug to Sun but wanted to find out if anybody else has come across anything similar to this.
    Thank for any help.
    Steve Feveile
    Here is sample code to reproduce the problem:
    // Main Class
    * Main frame for the testing of the component not painting. This simplifies
    * an issue we have come across when trying to set up using a JTextPane as a
    * renderer/editor as the cells in a table.
    * Under these conditions we have found that a component inserted into the JTextPanes document
    * only appears in the editing state of the cell, whereas the rendering state leaves
    * the spacing for the component but does not make it visible.
    * Note that creating a JTextPane with the one of these documents will show the component,
    * even when not editing.
    import java.awt.*;
    import java.awt.event.*;
    import java.util.*;
    import javax.swing.*;
    import javax.swing.text.*;
    import javax.swing.table.*;
    public class tableFrame extends JFrame
         public tableFrame()
              //set up frame
              getContentPane().setLayout(new BorderLayout());
              setSize(500,300);
              setTitle("Table Missing Component Test");
    addWindowListener(
         new WindowAdapter() {
              public void windowClosing(WindowEvent e) {
                             setVisible(false);                         
                   System.exit(0);     
              //set up components the table
              JTable table = new JTable(createDocumentTableModel(2,2));
              table.setRowHeight(60);
              //set the default renderer/editor to use the JTextPane implementation
              for (int x = 0; x < table.getColumnCount(); x++) {
                   table.setDefaultEditor(table.getColumnClass(x), new TextPaneCellEditor());
                   table.setDefaultRenderer(table.getColumnClass(x), new TextPaneRenderer());
              JScrollPane pane = new JScrollPane(table);
              getContentPane().add(pane, BorderLayout.CENTER);
              //this adds a textpane without the table involved
              //uising the same way of inserting a document
              JTextPane tPane = new JTextPane();
              DefaultStyledDocument doc = new DefaultStyledDocument();
              try
                   doc.insertString(0, "Some text in a JTextPane", null);
                   JButton b = new JButton("Button");
         SimpleAttributeSet inputAttributes = new SimpleAttributeSet();
              StyleConstants.setComponent(inputAttributes, b);
              doc.insertString(0 , " ", inputAttributes);
              catch (Throwable t)
                   System.out.println("createDocumentTableModel error: " + t.getMessage());
              tPane.setDocument(doc);
              tPane.setSize(490, 60);
              JScrollPane pane2 = new JScrollPane(tPane);
              getContentPane().add(pane2, BorderLayout.SOUTH);
         * this creates a table model where the documents are the value
         * in each cell, and the cell renderer/editor can use this instead
         * of a string value
         private TableModel createDocumentTableModel(int row, int col)
              Vector headerData = new Vector();
              Vector tableData = new Vector();
              for (int i=0;i<row;i++)
                   headerData.add("Column" + i);
                   Vector rowData = new Vector();
                   for (int j=0;j<col;j++)
                        DefaultStyledDocument doc = new DefaultStyledDocument();
                        try
                             //this inserts some string to see that this is visible
                             //when editing and rendering
                             doc.insertString(0, ("Row: " + i + ", Column: " + j), null);
                             //this button will only be visible when the cell is in
                             //an editing state
                             JButton b = new JButton("Button" + i + "-" + j);
                   SimpleAttributeSet inputAttributes = new SimpleAttributeSet();
                        StyleConstants.setComponent(inputAttributes, b);
                        doc.insertString(0 , " ", inputAttributes);
                        catch (Throwable t)
                             System.out.println("createDocumentTableModel error: " + t.getMessage());
                        rowData.add(doc);
                   tableData.add(rowData);
              return new DefaultTableModel(tableData, headerData);
         //starts the ball rolling
         static public void main(String args[])
              (new tableFrame()).setVisible(true);
    // Custom Cell Editor
    * Sets the editor to use a JTextPane implementation
    import java.awt.*;
    import java.awt.event.*;
    import javax.swing.table.*;
    import javax.swing.event.*;
    import java.util.EventObject;
    import java.io.Serializable;
    import javax.swing.*;
    import javax.swing.text.*;
    public class TextPaneCellEditor implements TableCellEditor
    /** Event listeners */
    protected EventListenerList listenerList = new EventListenerList();
    transient protected ChangeEvent changeEvent = null;
    protected JTextPane editorComponent;
    protected EditorDelegate delegate;
    protected int clickCountToStart = 1;
         * constructor.
    public TextPaneCellEditor() {
              editorComponent = new JTextPane();
              //use 1 click count to edit a cell
              clickCountToStart = 1;
              * controls the values of the editor
              delegate = new EditorDelegate() {
                   * sets the text value cell.
                   * @param value - value to set in the document
                   public void setValue(Object value) {
                        if (value instanceof Document)
                             editorComponent.setDocument((Document) value);
                        else
                             editorComponent.setText("");
                   * gets the text value cell.
                   * @return the document in the textpane
                   public Object getCellEditorValue() {
                        return editorComponent.getDocument();
         // implements the setting the value for the editor
         public Component getTableCellEditorComponent(JTable table, Object value,
                   boolean isSelected, int row, int column) {
              if (value != null)          
                   delegate.setValue(value);
              else
                   delegate.setValue("");
              return editorComponent;
    // Implementing the CellEditor Interface
         // implements javax.swing.CellEditor
         public Object getCellEditorValue() {
              return delegate.getCellEditorValue();
         // implements javax.swing.CellEditor
         public boolean isCellEditable(EventObject anEvent) {
              if (anEvent instanceof MouseEvent) {
                   return ((MouseEvent)anEvent).getClickCount() >= clickCountToStart;
              return true;
    // implements javax.swing.CellEditor
         public boolean shouldSelectCell(EventObject anEvent) {
              return delegate.shouldSelectCell(anEvent);
         // implements javax.swing.CellEditor
         public boolean stopCellEditing() {
              fireEditingStopped();
              return true;
         // implements javax.swing.CellEditor
         public void cancelCellEditing() {
              fireEditingCanceled();
    // Handle the event listener bookkeeping
         // implements javax.swing.CellEditor
         public void addCellEditorListener(CellEditorListener l) {
              listenerList.add(CellEditorListener.class, l);
         // implements javax.swing.CellEditor
         public void removeCellEditorListener(CellEditorListener l) {
              listenerList.remove(CellEditorListener.class, l);
         * Notify all listeners that have registered interest for
         * notification on this event type. The event instance
         * is lazily created using the parameters passed into
         * the fire method.
         * @see EventListenerList
         protected void fireEditingStopped() {
              // Guaranteed to return a non-null array
              Object[] listeners = listenerList.getListenerList();
              // Process the listeners last to first, notifying
              // those that are interested in this event
              for (int i = listeners.length-2; i>=0; i-=2) {
                   if (listeners==CellEditorListener.class) {
                        // Lazily create the event:
                        if (changeEvent == null)
                             changeEvent = new ChangeEvent(this);
                        ((CellEditorListener)listeners[i+1]).editingStopped(changeEvent);
         * Notify all listeners that have registered interest for
         * notification on this event type. The event instance
         * is lazily created using the parameters passed into
         * the fire method.
         * @see EventListenerList
         protected void fireEditingCanceled() {
              // Guaranteed to return a non-null array
              Object[] listeners = listenerList.getListenerList();
              // Process the listeners last to first, notifying
              // those that are interested in this event
              for (int i = listeners.length-2; i>=0; i-=2) {
                   if (listeners[i]==CellEditorListener.class) {
                        // Lazily create the event:
                        if (changeEvent == null)
                             changeEvent = new ChangeEvent(this);
                        ((CellEditorListener)listeners[i+1]).editingCanceled(changeEvent);
    // Protected EditorDelegate class
    protected class EditorDelegate implements ActionListener, ItemListener, Serializable {
              //made up of unimplemented methods
              protected Object value;
              public Object getCellEditorValue() {
                   return null;
              public void setValue(Object x) {}
              public void setDocument(Object x) {}
              public Document getDocument() {
                   return null;
              public boolean isCellEditable(EventObject anEvent) {
                   return true;
              /** Unfortunately, restrictions on API changes force us to
              * declare this method package private.
              boolean shouldSelectCell(EventObject anEvent) {
                   return true;
              public boolean startCellEditing(EventObject anEvent) {
                   return true;
              public boolean stopCellEditing() {
                   return true;
                   public void cancelCellEditing() {
              public void actionPerformed(ActionEvent e) {
                   fireEditingStopped();
              public void itemStateChanged(ItemEvent e) {
                   fireEditingStopped();
    // Custom Cell Renderer
    * renders a table cell as a JTextPane.
    import java.awt.*;
    import javax.swing.*;
    import javax.swing.text.*;
    import javax.swing.table.*;
    public class TextPaneRenderer extends JTextPane implements TableCellRenderer                                                  
         * Constructor - just set to noneditable
         public TextPaneRenderer() {
              setEditable(false);
         * implementation of table cell renderer. If the value is a document
         * the, the text panes setDocument is used, otherwise a string value
         * is set
         public Component getTableCellRendererComponent(JTable table, Object value,
                   boolean isSelected, boolean hasFocus, int row, int column) {
              if (value != null)
                   if (value instanceof Document)
                        //set the value to a document
                        setDocument((Document) value);
                   else
                        //convert the value to a string
                        setText(value.toString());
              else
                   //set text to an empty string
                   setText("");
              return this;

    Hi, I came across the forum and found your problem is very similar to what I am having now. Your post has been a year old, I just wonder if you come up anything productive to what you had? Could you let us know what you (or Sun) find out if you do have one? Thanks.

  • I can not delete my history and adding new bookmarks. Upgrading to later Firefox versions and/or re-installing didn't help. The address bar still shows the web addresses of old and whenever I make new bookmarks, it's always gone as if it was never made.

    I can not delete my history and adding new bookmarks.
    Upgrading to later Firefox versions and/or re-installing didn't rectify it either.
    The address bar still shows the web addresses of old and whenever I make new bookmarks, it's always gone as if it was never made.
    Also, I have noticed that every once in awhile you can not close tabs you've opened, either by pushing on the X button and/or clicking on the mouse to close it. Although closing the window and opening it again (without closing the Firefox application) seemed to rectify the problem in the short term, it's becoming quite annoying.
    == This happened ==
    Every time Firefox opened
    == the Firefox is being used

    I think I have a solution.
    First, download the add-on SQManager. This should be included with FireFox, it is really good.
    Look for the file '''moz_hosts''' in the folder '''places.sqlite'''.
    Don't delete the file, just delete the information in the file. My file has over 3600 websites, which go back years!! I did not know they were there, but I was frustrated about not being able to get rid of them. They popped up every time I used the address bar. Clearing my history would not get rid of them.
    This is where they are stored!! I found that by deleting the pesky web site from '''moz_hosts''', it does not appear in my address bar anymore!!!
    I think that if I just delete all the websites in moz_hosts....
    Wa-la...History Gone!!!
    As long as you don't delete the file, just empty it, FireFox won't know the difference. It will just keep adding websites to it until you empty it again.
    Why running "clear recent history" doesn't do this, I don't know. You are doing manually what "clear recent history" is not doing.
    Please tell me if you see any flaw in this.
    ''I think it's the solution we've all been looking for!''

  • How do I make it so that the one computer that has the main itunes account on it be used on other computers, when it comes to backing up phones and not deleting data off of phone that isnt on that computer itunes becasse its all on the one main computer

    how do I make it so that the one computer that has the main itunes account on it be used on other computers, when it comes to backing up phones and not deleting data off of phone that isnt on that computer itunes becasse its all on the one main computer. Baiscally the problem is that one comuter and one account has always been sued for eey persons itunes. Now if we want to be able to backup and use itunes on our own computers fro our iphones and such, how will all he data that is on our phones not be deleted once its plugged into a new computer? Also, is theere a way to get all the stuff on thw current itunes onto each computer, via differtn account name?

    option discovered in preferences. Really this and any feature that moves deletes or edits a users data should as far as possible be OFF BY DEFAULT. It shouldn't by default and without the users specific say do this dangerous and unnecessary thing without even letting the user know what it's doing!!! And then cause me a few hours (as i'm new to mac) searching for the option so as to switch it off. If i hadn't noticed the status cage declaring that it was copying files then i might never have twigged that this insane thing was occurring. And if i hadn't of noticed i would have been left maintaining the contents of the folder i copied the files to, the folder which as far as i was informed and so believed was also the location of the music files i was playing. How does Apple justify this 'genius' piece of software non-design? Surely it will hurt no one if this was off by default for new users - overall at least i dare say it would cause a lot less distress in the future for the unsuspecting public at large. Thanks for the support.

  • Hi.  I down load all of my pictures to iPhoto.  I was removing some even folders to make room, but DID NOT delete any of the ones I needed (and there are a lot of photos as I am a photographer just starting out).  All of my photos are gone.  ALL of them.

         Can anyone help me.  All of my photos from iPhoto are gone.  There are three weddings that I photographed and may other sessions (I am a brand new photographer and this is going to kill my business).  I am so sick to my stomach.  I was deleting some even files due to the fact that the start up disk was almost full but DID NOT delete everything.  I finished what I was doing and then went to dinner.  I came home to do more editing and EVERYTHING is gone.  EVERYTHING, but the iphoto program was still there.  Is there any chance that these pictures could still be somewhere on the hard drive?
    Thank you,
    Kari

    Did you use the finder to delete any photos that are in iPhoto?
    If so you have trashed your library - you choices are to put it back EXACTLY like it was, restore your backup or start over (right click on the iPhoto library and show package contents, drag the masters folder to the desktop, create a new library and start importing
    NEVER make any changes of any sort to the structure or content of the iPhoto library - ONLY use iPhoto to manage yoru photos
    LN

  • I am trying to clear files from my computer. I have a bunch of .m4v protected files that will not delete. They are lectures from college that I do not need anymore and would like to delete them to make room on my computer.

    I am trying to clear files from my computer. I have a bunch of .m4v protected files that will not delete. They are lectures from college that I do not need anymore and would like to delete them to make room on my computer. I have looked at the help sites and they seem to give directions to change files that people are saving in the future and not regarding past files. I am unable to change anything about the file including the name, so I can not change these past files from .m4v to something else which is deletable such as .mp4 etc. Any help would be much appreciated!!!!

    Well, most of what we can tell you is already stated in the message you are getting.  A phone can only sync with one library at a time.  You have apparently synced your phone with a different iTunes library in the past, or changes have been made to this library so the phone no longer recognizes it as the library with which it was synced.  To know which you will have to provide the information.
    If you bought them using the AppleID you use with this phone it may simply be easier to re-download them directly to the phone rather than sync them, though you will want to resolve that issue at some point.
    Downloading (using iOS or computer) past purchases from the App Store, iBookstore, and iTunes Store - http://support.apple.com/kb/ht2519

  • I have an error 42404 message.  I have uninstalled Itunes,quick time, etc, etc.  I then checked to make sure that all files had been deleted.  I have 2 files that haven't been deleted and are still not.  It will not allow me to delete them access denied.

    I received an error 42404 message.  I have uninstalled itunes, quick time, etc, etc.  I then went to check that all the files had been deleted, however,
    Program files\common files\Apple - will not delete - it says folder access denied
    program files (x86)\common files\Apple - will note delete - it says require permission from SYSTEM to make changes to this folder.
    How can I delete these 2 files so that I can reinstal Itunes?

    You can uninstall the relevant extensions from Tools>Addons to remove those toolbars. Also there may be some unwanted plugins which you may want to disable. This should solve your problems.
    If you still want a clean profile, uninstall firefox with the "Remove my Firefox personal data and customizations" checkbox enabled. Alternatively you may remove your firefox profile folder which (on Window7) is stored in C:\Users\<your-username>\AppData\Roaming\Mozilla\Firefox\Profiles folder with a randomly name. You may delete this folder before installing a new version to get a clean profile.

  • I have a MacBook Pro 15" 2007 which sometimes goes berserk writing the letter 'h', and makes a fast tapping sound when not in a doc. It stops when I hit the delete key. Also can't use the letter 'h' in a word processor.

    I have a MacBook Pro 15" 2007 which sometimes goes berserk writing the letter 'h' in a word processor. It stops when I hit the delete key for a while. Also can't use the letter 'h' in a word processor. The computer makes a fast tapping sound when not in a doc, in any application or in the finder or when a application is running. Sometimes when this is happening I cannot control the cursor. I have to hit the 'delete' key to proceed. Does anyone know anything of this?

    You are still under warranty.  Call Apple Care. Make sure you get a case number as all repairs have an additional 90 days of warranty. 
    #1 - You have 14 days from the date of purchase to return your computer with no questions asked.
    #2 - You have 90 days of FREE phone tech support.
    #3 - You have the standard one year Apple warranty.
    #4 - If you've purchased an AppleCare Protection Plan, your warranty last for 3 years.   You can obtain AppleCare anytime up to the first year of the purchase of your computer.
    Take FULL advantage of your warranty.  Posting on a message board should be done as a last resort and if you are out of warranty or Apple Care has expired.

  • Ipad 2 stuck on connect to itunes screen, computer makes sound when inserted but itunes does not show ipad???, Ipad 2 stuck on connect to itunes screen, computer makes sound when inserted but itunes does not show ipad???

    I tried to restore ipad 2 with itunes, came up with an error 1015 i think. It now either shows a blank screen or the connect to itunes screen. When connected to computer it makes a low 3 beat sound (not normal when I used to connect would make different sound). Will not show up in itunes or on computer!!!? Please help

    Connect the Device to the iTunes library you Usually Sync with, open iTunes, click on the Device tab that appears in the Left side column of iTunes, Select your Device, then go to the Summary Page and click Restore.
    http://support.apple.com/kb/HT1414
    If necessary Place the Device into Recovery mode...
    http://support.apple.com/kb/HT1808

  • JSP : Tiles Error �tag.getAsString� : component context is not defined

    JSP : Tiles Error �tag.getAsString� : component context is not defined
    I�m working with Struts 1.1 and Tiles, under Tomcat 5.0.16
    My application works fine using Struts 1.1 alone, however, when attempting to run the application in a �Tiles� environment, I get an error:

    javax.servlet.jsp.JspException: Error - tag.getAsString : component context is not defined. Check tag syntax

    I have �defined� this in my �tiles-defs.xml� file, and as far as I can tell, everything else is configured properly (I have looked over the included Struts document examples, and others on the web, and I seem to have everything configured identically).
    What am I missing???
    I have created a series of �mostly� empty JSP files, for simplicity sake.
    JSP FILES:
    -     header.jsp
    -     footer.jsp
    -     menu.jsp
    -     rootLayout.jsp
    -     user.jsp
    -     show_user.jsp
    -     error.jsp
    -     defaultContentPage.jsp
    All JSP files contain:
    <%@ taglib uri="/WEB-INF/lib/struts-tiles.tld" prefix="tiles" %>
    and

    <title>
    <tiles:getAsString name="title"/>
    </title>

    My �tiles-defs.xml�: =================================================
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE tiles-definitions PUBLIC
    "-//Apache Software Foundation//DTD Tiles Configuration 1.1//EN"
    "http://jakarta.apache.org/struts/dtds/tiles-config_1_1.dtd">
    <tiles-definitions>
    <!-- ================ RootLayout ======================= -->
    <definition name=".root.layout" path="/jsp/rootLayout.jsp" >
    <put name="title" value="Default title"/>
    <put name="header" value="/jsp/header.jsp"/>
    <put name="menu" value="/jsp/menu.jsp"/>
    <put name="content" value="/jsp/defaultContentPage.jsp"/>
    <put name="footer" value="/jsp/footer.jsp"/>
    </definition>
    <!-- ================ Extentions ======================= -->
    <!-- User -->
    <definition name=".view.user" extends=".root.layout">
    <put name="title" value="Welcome to the User Form."/>
    <put name="content" value="/jsp/user.jsp"/>
    </definition >
    <!-- Save -->
    <definition name=".view.save" extends=".root.layout">
    <put name="title" value="Welcome to the Show User Form."/>
    <put name="content" value="/jsp/show_user.jsp"/>
    </definition >
    <!-- Error -->
    <definition name=".view.error" extends=".root.layout">
    <put name="title" value="Error Message."/>
    <put name="content" value="/jsp/error.jsp"/>
    </definition >
    </tiles-definitions>
    My �struts-config.xml�: ==============================================
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE struts-config PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 1.1//EN"
    "http://jakarta.apache.org/struts/dtds/struts-config_1_1.dtd">
    <struts-config>
    <!-- ========== FormBeans =================================== -->
    <form-beans>
    <form-bean name="userForm" type="biz.seamrog.strutstest.model.state.UserForm"/>
    </form-beans>
    <!-- ========== Action Mapping Definitions=================== -->
    <action-mappings>
    <!-- Action using normal forward syntax...
    <action path="/user"
    forward="/jsp/user.jsp">
    </action>
    -->
    <!-- Action using a "Tiles" forward syntax...
    The "forward" path mappings are defined in a file named
    "../WEB-INF/tiles-defs.xml
    -->
    <action path="/user"
    forward=".view.user">
    </action>
    <!-- Action using normal forward syntax...
    <action path="/save"
    type="biz.seamrog.strutstest.model.logic.SaveAction"
    name="userForm" scope="request"
    input="/jsp/user.jsp">
    <forward name="success" path="/jsp/show_user.jsp"/>
    <forward name="failure" path="/jsp/error.jsp"/>
    </action>
    -->
    <!-- Tiles syntax -->
    <action path="/save"
    type="biz.seamrog.strutstest.model.logic.SaveAction"
    name="userForm" scope="request"
    input="/jsp/user.jsp">
    <forward name="success" path=".view.show_user"/>
    <forward name="failure" path=".view.error"/>
    </action>
    </action-mappings>
    <!-- ============== Global Forwards ======================== -->
    <global-forwards>
    <!-- NOTE: paths with "." syntax are Tiles defined paths,
    all other paths follow conventional "/path/to/file.jsp syntax
    -->
    <forward name="user" path=".view.user"/>
    <forward name="show_user" path=".view.show_user"/>
    <forward name="error" path=".view.error"/>
    <forward name="cssBase" path="/stylesheets/common.css"/>
    </global-forwards>
    <!-- ============= Plug-ins =============== -->
    <!-- Tiles Plug-in -->
    <plug-in className="org.apache.struts.tiles.TilesPlugin" >
    <set-property property="definitions-config" value="/WEB-INF/tiles-defs.xml"/>
    <set-property property="definitions-parser-validate" value="true" />
    <set-property property="moduleAware" value="true" />
    </plug-in>
    </struts-config>
    My �web.xml�: =====================================================
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE web-app PUBLIC '-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN' 'http://java.sun.com/dtd/web-app_2_3.dtd'>
    <web-app>
    <servlet>
    <!--
    MyController extends org.apache.struts.action.ActionServlet
    NOTE: The servlet could also be specified specifying the
    default Struts ActonServlet...
    <servlet-name>controller</servlet-name>
    <servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
    ...I have chosen to extend here just for practice sake.
    -->
    <!--
    <servlet-name>MyController</servlet-name>
    <servlet-class>biz.seamrog.strutstest.controller.MyController</servlet-class>
    -->
    <servlet-name>MyController</servlet-name>
    <servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
    <!--
    Point to Struts configuration file(s)
    -->
    <init-param>
    <param-name>config</param-name>
    <param-value>/WEB-INF/struts-config.xml</param-value>
    </init-param>
    <!-- Tiles config -->
    <init-param>
    <param-name>definitions-config</param-name>
    <param-value>/WEB-INF/tiles-defs.xml</param-value>
    </init-param>
    <!-- This is the added Application parameter: -->
    <init-param>
    <param-name>application</param-name>
    <param-value>ApplicationResource</param-value>
    </init-param>
    <!-- end -->
    <load-on-startup>5</load-on-startup>
    </servlet>
    <!--
    All incoming requests that end in .do, send to MyController.
    -->
    <servlet-mapping>
    <servlet-name>MyController</servlet-name>
    <url-pattern>*.do</url-pattern>
    </servlet-mapping>
    <!--
    Send initial requests to the login page for this application
    -->
    <welcome-file-list>
    <welcome-file>/jsp/user.jsp</welcome-file>
    </welcome-file-list>
    <!--
    Make all of the necessary related Struts JSP custom tag libraries
    available and define where to find them.
    -->
    <taglib>
    <taglib-uri>/WEB-INF/lib/struts-bean.tld</taglib-uri>
    <taglib-location>/WEB-INF/lib/struts-bean.tld</taglib-location>
    </taglib>
    <taglib>
    <taglib-uri>/WEB-INF/lib/struts-html.tld</taglib-uri>
    <taglib-location>/WEB-INF/lib/struts-html.tld</taglib-location>
    </taglib>
    <taglib>
    <taglib-uri>/WEB-INF/lib/struts-logic.tld</taglib-uri>
    <taglib-location>/WEB-INF/lib/struts-logic.tld</taglib-location>
    </taglib>
    <taglib>
    <taglib-uri>/WEB-INF/lib/struts-tiles.tld</taglib-uri>
    <taglib-location>/WEB-INF/lib/struts-tiles.tld</taglib-location>
    </taglib>
    </web-app>
    My �rootLayout.jsp�: ================================================
    <%@page contentType="text/html"%>
    <%@ taglib uri="/WEB-INF/lib/struts-tiles.tld" prefix="tiles" %>
    <html>
    <header>
    <title>
    <tiles:getAsString name="title" />
    </title>
    <body>
    <tiles:get name="header"/>
    <tiles:get name="menu"/> <tiles:get name="content"/>
    <tiles:get name="footer"/>
    </body>
    </html>

    I found an entry in the Mail Archive for Struts. I got it working. My working code is below. You need to in the base JSP import the header and put the 'title' out to it.
    tiles:def file:
    <!DOCTYPE tiles-definitions PUBLIC
    "-//Apache Software Foundation//DTD Tiles Configuration 1.1//EN"
    "http://jakarta.apache.org/struts/dtds/tiles-config_1_1.dtd">
    <tiles-definitions>
    <definition name=".petstore.Base" path="/common/petstorecommon.jsp">
    <put name="title" value ="${title}"/>
    <put name="header" value="/common/header.jsp"/>
    <put name="message" value="/common/message.jsp"/>
    <put name="content" value="${content}"/>
    <put name="navbar" value="/common/navbar.jsp"/>
    </definition>
    <definition name="petstore.Login" extends=".petstore.Base" >
    <put name="title" value="Login Page" />
    <put name="content" value="/Logon.jsp"/>
    <put name="test1" value="test1value"/>
    </definition>
    base tile def:
    <%@ taglib uri="/WEB-INF/struts-tiles.tld" prefix="tiles"%>
    <%@ page contentType="text/html;charset=windows-1252"%>
    <html:html>
    <head>
    <html:base/>
    <meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
    <title>pet store common (jsp)</title>
    </head>
    <body>
    <tiles:insert attribute="header">
    <%-- both of these attributes are accessible from header.jsp It works!!! --%>
    <tiles:put name="title" beanName="title" beanScope="tile" />
    <tiles:put name="test1" beanName="test1" beanScope="tile" />
    </tiles:insert>
    <%-- <tiles:get name="header" /> --%>
    <tiles:get name="message" />
    <tiles:get name="content" />
    <tiles:get name="navbar" />
    </body>
    </html:html>
    Getting access to the title value in the header.jsp file:
    <%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean"%>
    <%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html"%>
    <%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic"%>
    <%@ taglib uri="/WEB-INF/struts-tiles.tld" prefix="tiles"%>
    <html>
    <head>
    <tiles:getAsString name="title" />
    <tiles:getAsString name="test1" />
    </head>
    <body>
    </body>
    </html>

  • TECO does not delete the reservations

    Hi ,
    I have a problem. Some process orders were created without storage location. On release it has created resrvations.
    When i do the TECO of this order , reservations are not deleted.
    Regards
    ShankarR

    Hi!,
    If the component is non backflushed then go to MD25, enter order No., execute and check whether system shows any reservation or not. Ideally on TECO all the reservations are deleted.
    The following actions are executed if an order is set to Technically complete.
    > The order is not relevant for MRP planning
    > Reservations are deleted
    > Capacity requirements are deleted
    > Purchase requisitions for external operations or non-stock materials are deleted
    > The order and its operations receive the system status Technically Completed (TECO)
    If an order is technically complete, you cannot change it. The fields in the order are displayed but cannot be changed. You can however cancel technical completion, for instance if order data has to be changed.
    After technical completion you can still make postings for the order. For instance, material withdrawal or a confirmation can be posted if they were previously forgotten.
    Regards,
    Uday

  • Inserting components to JTextPane

    Hi,
    I need to insert components to JTextPane. I know JTextPane provides a method insertComponent() for this purpose.
    But this does not work when you set the content type to "text/html".
    For example if I do the following:
    JTextPane textPane = new JTextPane();
    textPane.setContentType("text/html");and then try to insert a component it does not work.
    My question is, can I insert a JLabel/JButton to JTextPane once I set the content type to "text/html"?

    My question is, can I insert a JLabel/JButton to JTextPane once I set
    the content type to "text/html"? You don't really know what you did, do you?
    No, you can not add other widgets into a JTextPane since it's not a container. That is completely irrelevant from the fact that you can specify a MIME type for what's written inside the text pane.

  • Windows Mail could not be started. Make sure that your disk is not full or that you are not out of memory (0x800C0155).

    I have Vista SP2. Every time I open Firefox (3.6.13), I get three consecutive error messages:
    1) Windows Mail could not be started. The application was unable to open the Windows Mail message store. Your Windows Mail mailbox data is currently being used by another program, such as a virus scanner. Close the program or wait for it to complete its operation, then open Windows Mail again (0x800C0155).
    2) Windows Mail could not be started. Make sure that your disk is not full or that you are not out of memory (0x800C0155).
    3) Windows Mail could not be started because MSOE.DLL could not be initialized.
    This series of messages continue to recur during my Firefox session and eventually will freeze up my session.
    I use Gmail. I do not use Windows Mail or Outlook Express and deleted Windows Live Mail. There is a a file named msoe.dll using the path C: /Program Files/Windows Mail. I also found C:/Program Files/Windows Live/RemoteActiveX even though I thought I deleted all Windows Live programs.
    I have set Firefox as the default browser. Also, in Firefox, if I click on "File=>Send Link", it triggers the series of three error messages above.
    I don't understand why Gmail would reference Winmail. Any ideas how I can fix this? Can I or should I delete the Windows Mail and Windows Live folders?

    I have had many problems with permissions on Windows Vista, 7,8 & 81.1.  It is usually after an update or installation, especially one that requires a reboot to finish (some AVG, Windows Live, Windows Updates, etc).  Once File(s), Folder(s)
    and Registry Key(s) permissions are screwed up, it can take days to work them out if ever.
    After having spent several hours on a clients PC and online forums with this problem.  I transferred her user profile with a free program called
    Transwiz (run as Administrator) to a zip file on the HDD.  I renamed her user in manage User Accounts to "Username old".  I then ran Transwiz again to restore the profile but telling it to create a new user using the original Username.
     After it completed restoring the profile, I logged out of "Username old" and logged in to Username and all wass well, I only needed to supply the email password which is not transferred.  When you move profile data, all the old permissions
    have to be removed and <st1:personname w:st="on">new</st1:personname> permissions added so the data and files belong to the <st1:personname w:st="on">new</st1:personname> user.  This cleared up all the permission
    problems.
    James Taylor

  • ITunes not delete songs from your hard drive while they're playing?

    So, if I delete a song, it says "would you like to keep this file or delete it?" And I always want to delete it; I can't even imagine why I would want to keep files I'm deleting.
    However, if you are playing a song at the time, or if you're listening to a podcast and it has finished playing, if you try to delete them, it will not delete the file even if you tell it to.
    Is there a setting around this or is iTunes just as stupid as I think?
    i.e. Is the only solution after you finish listening to a podcast to play some other random file and then delete it?
    This became infinitely more annoying after iTunes decided that videos should automatically be played in the window instead of a new window, since now I have to make sure I'm picking another random file that ISN'T a video so I can actually see the original file and delete it.

    I often want to remove files from my iTunes library, but keep them on my harddrive. That's why iTunes asks you if you want to delete it. Holding control down when you hit delete will at least get rid of the first dialogue box.
    If you are trying to delete a song that is playing, it won't delete it because it is in use.
    I assume the same is happening on your machine with podcasts. Your system thinks the files is still in use, so can not delete it.

Maybe you are looking for