facebook

compile errors from 2 .java files ?

  1. MyEclipse Archived
  2.  > 
  3. Web Development (HTML, CSS, etc.)
Viewing 2 posts - 1 through 2 (of 2 total)
  • Author
    Posts
  • #229554 Reply

    cable
    Member

    -Can you interpret the following compile errors from 2 .java files ?
    ——————————————————————————
    Severity Description Resource In Folder Location Creation Time
    2 The type MainFrame must implement the inherited abstract method AppletContext.getStream(String) MainFrame.java sfkorean/src/Acme
    2 The type MainFrame must implement the inherited abstract method AppletContext.getStreamKeys() MainFrame.java sfkorean/src/Acme
    2 The type MainFrame must implement the inherited abstract method AppletContext.setStream(String, InputStream) MainFrame.java sfkorean/src/Acme
    ==========================================================
    2 The type StubToolkit must implement the inherited abstract method Toolkit.createDragSourceContextPeer(DragGestureEvent) StubToolkit.java sfkorean/src/Acme/JPM
    2 The type StubToolkit must implement the inherited abstract method Toolkit.createImage(String) StubToolkit.java sfkorean/src/Acme/JPM
    2 The type StubToolkit must implement the inherited abstract method Toolkit.createImage(URL) StubToolkit.java sfkorean/src/Acme/JPM
    2 The type StubToolkit must implement the inherited abstract method Toolkit.mapInputMethodHighlight(InputMethodHighlight) StubToolkit.java sfkorean/src/Acme/JPM
    2 Cannot reduce the visibility of the inherited method from Image StubToolkit.java sfkorean/src/Acme/JPM
    2 The type StubGraphics must implement the inherited abstract method Graphics.drawString(AttributedCharacterIterator, int, int) StubToolkit.java sfkorean/src/Acme/JPM
    —————————————————————————-
    windows xp used, C:\Java\eclipse\plugins 252 objects are shown, Eclipse 3.1M6,Myeclipse workbench 3.8.4 , j2sdk1.4.2_08, J2EE1.4 installed.
    The two .java codes are as follows.
    [/code]

    ** 1St code: Mainframe.java code
    ——————————————————-
    // MainFrame – run an Applet as an application
    //

    package Acme;

    import java.applet.*;
    import java.awt.*;
    import java.awt.image.*;
    import java.net.*;
    import java.io.*;
    import java.util.*;

    /// Run an Applet as an application.
    // <P>
    // Using this class you can add a trivial main program to any Applet
    // and run it directly, as well as from a browser or the appletviewer.
    // And unlike some versions of this concept, MainFrame implements both
    // images and sound.
    // <P>
    // Sample main program:
    // <BLOCKQUOTE>

    // public static void main( String[] args )

    // {

    // new Acme.MainFrame( new ThisApplet(), args, 400, 400 );

    // }

    //
    </BLOCKQUOTE>
    // The only methods you need to know about are the constructors.
    // <P>
    // You can specify Applet parameters on the command line, as name=value.
    // For instance, the equivalent of:
    // <BLOCKQUOTE>

    // <PARAM NAME=”pause” VALUE=”200″>

    //
    </BLOCKQUOTE>
    // would just be:
    // <BLOCKQUOTE>

    // pause=200

    //
    </BLOCKQUOTE>
    // You can also specify three special parameters:
    // <BLOCKQUOTE>

    // width=N Width of the Applet.

    // height=N Height of the Applet.

    // barebones=true Leave off the menu bar and status area.

    //
    </BLOCKQUOTE>
    // <P>
    // <A HREF=”/resources/classes/Acme/MainFrame.java”>Fetch the software.</A><BR>
    // <A HREF=”/resources/classes/Acme.tar.gz”>Fetch the entire Acme package.</A>

    public class MainFrame extends Frame
    implements Runnable, AppletStub, AppletContext
    {

    private String[] args = null;
    private static int instances = 0;
    private String name;
    private boolean barebones = false;
    private Applet applet;
    private Label label = null;
    private Dimension appletSize;

    private static final String PARAM_PROP_PREFIX = “parameter.”;

    /// Constructor with everything specified.
    public MainFrame(
    Applet applet, String[] args, int width, int height )
    {
    build( applet, args, width, height );
    }

    /// Constructor with no default width/height.
    public MainFrame( Applet applet, String[] args )
    {
    build( applet, args, -1, -1 );
    }

    /// Constructor with no arg parsing.
    public MainFrame( Applet applet, int width, int height )
    {
    build( applet, null, width, height );
    }

    // Internal constructor routine.
    private void build(
    Applet applet, String[] args, int width, int height )
    {
    ++instances;
    this.applet = applet;
    this.args = args;
    applet.setStub( this );
    name = applet.getClass().getName();
    setTitle( name );

    // Set up properties.
    Properties props = System.getProperties();
    props.put( “browser”, “Acme.MainFrame” );
    props.put( “browser.version”, “11jul96” );
    props.put( “browser.vendor”, “Acme Laboratories” );
    props.put( “browser.vendor.url”, “http://www.acme.com/&#8221; );

    // Turn args into parameters by way of the properties list.
    if ( args != null )
    parseArgs( args, props );

    // If width and height are specified in the parameters, override
    // the compiled-in values.
    String widthStr = getParameter( “width” );
    if ( widthStr != null )
    width = Integer.parseInt( widthStr );
    String heightStr = getParameter( “height” );
    if ( heightStr != null )
    height = Integer.parseInt( heightStr );

    // Were width and height specified somewhere?
    if ( width == -1 || height == -1 )
    {
    System.err.println( “Width and height must be specified.” );
    return;
    }

    // Do we want to run bare-bones?
    String bonesStr = getParameter( “barebones” );
    if ( bonesStr != null && bonesStr.equals( “true” ) )
    barebones = true;

    if ( ! barebones )
    {
    // Make menu bar.
    MenuBar mb = new MenuBar();
    Menu m = new Menu( “Applet” );
    m.add( new MenuItem( “Restart” ) );
    m.add( new MenuItem( “Clone” ) );
    m.add( new MenuItem( “Close” ) );
    m.add( new MenuItem( “Quit” ) );
    mb.add( m );
    setMenuBar( mb );
    }

    // Lay out components.
    setLayout( new BorderLayout() );
    add( “Center”, applet );
    if ( ! barebones )
    {
    Panel borderPanel =
    new Acme.Widgets.BorderPanel( Acme.Widgets.BorderPanel.RAISED );
    borderPanel.setLayout( new BorderLayout() );
    label = new Label( “” );
    borderPanel.add( “Center”, label );
    add( “South”, borderPanel );
    }

    // Set up size.
    pack();
    validate();
    appletSize = applet.size();
    // appletSize = applet.getSize();
    applet.resize( width, height );
    // applet.setSize( width, height );
    show();

    // Start a separate thread to call the applet’s init() and start()
    // methods, in case they take a long time.
    (new Thread( this )).start();
    }

    // Turn command-line arguments into Applet parameters, by way of the
    // properties list.
    private static void parseArgs( String[] args, Properties props )
    {
    for ( int i = 0; i < args.length; ++i )
    {
    String arg = args[i];
    int ind = arg.indexOf( ‘=’ );
    if ( ind == -1 )
    props.put( PARAM_PROP_PREFIX + arg.toLowerCase(), “” );
    else
    props.put(
    PARAM_PROP_PREFIX + arg.substring( 0, ind ).toLowerCase(),
    arg.substring( ind + 1 ) );
    }
    }

    /// Event handler for the menu bar.
    public boolean handleEvent( Event evt )
    {
    switch ( evt.id )
    {
    case Event.ACTION_EVENT:
    if ( evt.arg.equals( “Restart” ) )
    {
    applet.stop();
    applet.destroy();
    Thread thread = new Thread( this );
    thread.start();
    }
    else if ( evt.arg.equals( “Clone” ) )
    {
    try
    {
    new MainFrame(
    (Applet) applet.getClass().newInstance(), args,
    appletSize.width, appletSize.height );
    }
    catch ( IllegalAccessException e )
    {
    showStatus( e.getMessage() );
    }
    catch ( InstantiationException e )
    {
    showStatus( e.getMessage() );
    }
    }
    else if ( evt.arg.equals( “Close” ) )
    {
    setVisible( false );
    remove( applet );
    applet.stop();
    applet.destroy();
    if ( label != null )
    remove( label );
    dispose();
    –instances;
    if ( instances == 0 )
    System.exit( 0 );
    }
    else if ( evt.arg.equals( “Quit” ) )
    System.exit( 0 );
    break;

    case Event.WINDOW_DESTROY:
    System.exit( 0 );
    break;
    }
    return super.handleEvent( evt );
    }

    // Methods from Runnable.

    /// Separate thread to call the applet’s init() and start() methods.
    public void run()
    {
    showStatus( name + ” initializing…” );
    applet.init();
    validate();
    showStatus( name + ” starting…” );
    applet.start();
    validate();
    showStatus( name + ” running…” );
    }

    // Methods from AppletStub.

    public boolean isActive()
    {
    return true;
    }

    public URL getDocumentBase()
    {
    // Returns the current directory.
    String dir = System.getProperty( “user.dir” );
    String urlDir = dir.replace( File.separatorChar, ‘/’ );
    try
    {
    return new URL( “file:” + urlDir + “/”);
    }
    catch ( MalformedURLException e )
    {
    return null;
    }
    }

    public URL getCodeBase()
    {
    // Hack: loop through each item in CLASSPATH, checking if
    // the appropriately named .class file exists there. But
    // this doesn’t account for .zip files.
    String path = System.getProperty( “java.class.path” );
    Enumeration st = new StringTokenizer( path, “:” );
    while ( st.hasMoreElements() )
    {
    String dir = (String) st.nextElement();
    String filename = dir + File.separatorChar + name + “.class”;
    File file = new File( filename );
    if ( file.exists() )
    {
    String urlDir = dir.replace( File.separatorChar, ‘/’ );
    try
    {
    return new URL( “file:” + urlDir + “/” );
    }
    catch ( MalformedURLException e )
    {
    return null;
    }
    }
    }
    return null;
    }

    public String getParameter( String name )
    {
    // Return a parameter via the munged names in the properties list.
    return System.getProperty( PARAM_PROP_PREFIX + name.toLowerCase() );
    }

    public void appletResize( int width, int height )
    {
    // Change the frame’s size by the same amount that the applet’s
    // size is changing.
    Dimension frameSize = size();
    // Dimension frameSize = getSize();
    frameSize.width += width – appletSize.width;
    frameSize.height += height – appletSize.height;
    resize( frameSize );
    // setSize( frameSize );
    appletSize = applet.size();
    // appletSize = applet.getSize();
    }

    public AppletContext getAppletContext()
    {
    return this;
    }

    // Methods from AppletContext.

    public AudioClip getAudioClip( URL url )
    {
    // This is an internal undocumented routine. However, it
    // also provides needed functionality not otherwise available.
    // I suspect that in a future release, JavaSoft will add an
    // audio content handler which encapsulates this, and then
    // we can just do a getContent just like for images.
    return new sun.applet.AppletAudioClip( url );
    }

    public Image getImage( URL url )
    {
    Toolkit tk = Toolkit.getDefaultToolkit();
    try
    {
    ImageProducer prod = (ImageProducer) url.getContent();
    return tk.createImage( prod );
    }
    catch ( IOException e )
    {
    return null;
    }
    }

    public Applet getApplet( String name )
    {
    // Returns this Applet or nothing.
    if ( name.equals( this.name ) )
    return applet;
    return null;
    }

    public Enumeration getApplets()
    {
    // Just yields this applet.
    Vector v = new Vector();
    v.addElement( applet );
    return v.elements();
    }

    public void showDocument( URL url )
    {
    // Ignore.
    }

    public void showDocument( URL url, String target )
    {
    // Ignore.
    }

    public void showStatus( String status )
    {
    if ( label != null )
    label.setText( status );
    }

    }

    ** 2nd Code : StubToolkit.java code
    —————————————————–
    // StubToolkit – bare-bones Toolkit for non-GUI applications
    //
    //
    </BLOCKQUOTE>
    // <P>
    // <A HREF=”/resources/classes/Acme/JPM/StubToolkit.java”>Fetch the software.</A><BR>
    // <A HREF=”/resources/classes/Acme.tar.gz”>Fetch the entire Acme package.</A>

    public class StubToolkit extends Toolkit
    {

    static
    {
    // Load C library to get GIF-parsing routine. Dunno how portable
    // this is to non-Solaris machines.
    System.loadLibrary(“awt”);
    }

    public StubToolkit()
    {
    }

    // Fail to create peer objects.
    public WindowPeer createWindow( Window target )
    {
    throw new InternalError( “not implemented” );
    }
    public FramePeer createFrame( Frame target )
    {
    throw new InternalError( “not implemented” );
    }
    public CanvasPeer createCanvas( Canvas target )
    {
    throw new InternalError( “not implemented” );
    }
    public PanelPeer createPanel( Panel target )
    {
    throw new InternalError( “not implemented” );
    }
    public ButtonPeer createButton( Button target )
    {
    throw new InternalError( “not implemented” );
    }
    public TextFieldPeer createTextField( TextField target )
    {
    throw new InternalError( “not implemented” );
    }
    public ChoicePeer createChoice( Choice target )
    {
    throw new InternalError( “not implemented” );
    }
    public LabelPeer createLabel( Label target )
    {
    throw new InternalError( “not implemented” );
    }
    public ListPeer createList( java.awt.List target )
    {
    throw new InternalError( “not implemented” );
    }
    public CheckboxPeer createCheckbox( Checkbox target )
    {
    throw new InternalError( “not implemented” );
    }
    public ScrollbarPeer createScrollbar( Scrollbar target )
    {
    throw new InternalError( “not implemented” );
    }
    public ScrollPanePeer createScrollPane( ScrollPane target )
    {
    throw new InternalError( “not implemented” );
    }
    public TextAreaPeer createTextArea( TextArea target )
    {
    throw new InternalError( “not implemented” );
    }
    public DialogPeer createDialog( Dialog target )
    {
    throw new InternalError( “not implemented” );
    }
    public FileDialogPeer createFileDialog( FileDialog target )
    {
    throw new InternalError( “not implemented” );
    }
    public MenuBarPeer createMenuBar( MenuBar target )
    {
    throw new InternalError( “not implemented” );
    }
    public MenuPeer createMenu( Menu target )
    {
    throw new InternalError( “not implemented” );
    }
    public PopupMenuPeer createPopupMenu( PopupMenu target )
    {
    throw new InternalError( “not implemented” );
    }
    public MenuItemPeer createMenuItem( MenuItem target )
    {
    throw new InternalError( “not implemented” );
    }
    public CheckboxMenuItemPeer createCheckboxMenuItem( CheckboxMenuItem target )
    {
    throw new InternalError( “not implemented” );
    }
    public FontPeer getFontPeer( String name, int style )
    {
    throw new InternalError( “not implemented” );
    }

    public Dimension getScreenSize()
    {
    return new Dimension( getScreenWidth(), getScreenHeight() );
    }

    static ColorModel colorModel = null;

    public synchronized ColorModel getColorModel()
    {
    if ( colorModel == null )
    colorModel = ColorModel.getRGBdefault();
    return colorModel;
    }

    static Toolkit toolkit = null;

    public static synchronized Toolkit getDefaultToolkit()
    {
    if ( toolkit == null )
    toolkit = new StubToolkit();
    return toolkit;
    }

    public int getScreenResolution()
    {
    throw new InternalError( “not implemented” );
    }
    int getScreenWidth()
    {
    throw new InternalError( “not implemented” );
    }
    int getScreenHeight()
    {
    throw new InternalError( “not implemented” );
    }
    public String[] getFontList()
    {
    throw new InternalError( “not implemented” );
    }
    public FontMetrics getFontMetrics( Font font )
    {
    throw new InternalError( “not implemented” );
    }

    public void sync()
    {
    }

    static Hashtable imgHash = new Hashtable();

    static synchronized Image getImageFromHash( Toolkit tk, URL url )
    {
    SecurityManager security = System.getSecurityManager();
    if ( security != null )
    security.checkConnect( url.getHost(), url.getPort() );
    Image img = (Image) imgHash.get( url );
    if ( img == null )
    {
    try
    {
    img = tk.createImage( (ImageProducer) url.getContent() );
    imgHash.put( url, img );
    }
    catch ( Exception e )
    {}
    }
    return img;
    }

    static synchronized Image getImageFromHash( Toolkit tk, String filename )
    {
    SecurityManager security = System.getSecurityManager();
    if ( security != null )
    security.checkRead( filename );
    Image img = (Image) imgHash.get( filename );
    if ( img == null )
    {
    try
    {
    img = tk.createImage( new FileImageSource( filename ) );
    imgHash.put( filename, img );
    }
    catch ( Exception e )
    {}
    }
    return img;
    }

    public Image getImage( String filename )
    {
    return getImageFromHash( this, filename );
    }

    public Image getImage( URL url )
    {
    return getImageFromHash( this, url );
    }

    static boolean prepareScrImage( Image img, int w, int h, ImageObserver o )
    {
    if ( w == 0 || h == 0 )
    return true;
    StubImage ximg = (StubImage) img;
    if ( ximg.hasError() )
    {
    if ( o != null )
    o.imageUpdate( img, ImageObserver.ERROR|ImageObserver.ABORT,
    -1, -1, -1, -1 );
    return false;
    }
    if ( w < 0 ) w = -1;
    if ( h < 0 ) h = -1;
    ImageRepresentation ir = ximg.getImageRep();
    return ir.prepare( o );
    }

    static int checkScrImage( Image img, int w, int h, ImageObserver o )
    {
    StubImage ximg = (StubImage) img;
    int repbits;
    if ( w == 0 || h == 0 )
    repbits = ImageObserver.ALLBITS;
    else
    {
    if ( w < 0 ) w = -1;
    if ( h < 0 ) h = -1;
    repbits = ximg.getImageRep().check( o );
    }
    return ximg.check( o ) | repbits;
    }

    public int checkImage( Image img, int w, int h, ImageObserver o )
    {
    return checkScrImage( img, w, h, o );
    }

    public boolean prepareImage( Image img, int w, int h, ImageObserver o )
    {
    return prepareScrImage( img, w, h, o );
    }

    public Image createImage( ImageProducer producer )
    {
    return new StubImage( producer );
    }
    public Image createImage( byte[] imagedata, int imageoffset, int imagelength)
    {
    /*
    return new StubImage( imagedata, imageoffset, imagelength );
    */
    throw new InternalError( “not implemented” );
    }

    public PrintJob getPrintJob( Frame frame, String jobtitle, Properties props )
    {
    throw new InternalError( “not implemented” );
    }
    public void beep()
    {
    ( new Acme.SynthAudioClip( 440, 250 ) ).play();
    }
    public java.awt.datatransfer.Clipboard getSystemClipboard()
    {
    throw new InternalError( “not implemented” );
    }
    public java.awt.EventQueue getSystemEventQueueImpl()
    {
    throw new InternalError( “not implemented” );
    }
    public java.awt.dnd.peer.DragSourceContextPeer createDragSourceContextPeer( java.awt.dnd.DragSource ds, java.awt.Component c )
    {
    throw new InternalError( “not implemented” );
    }

    }

    class StubImage extends sun.awt.image.Image
    {

    /*
    // Construct an image from image data.
    public StubImage( byte[] imagedata, int imageoffset, int imagelength )
    {
    super( imagedata, imageoffset, imagelength );
    }
    */

    // Construct an image from an ImageProducer object.
    public StubImage( ImageProducer producer )
    {
    super( producer );
    }

    public Graphics getGraphics()
    {
    return new StubGraphics( this );
    }

    protected sun.awt.image.ImageRepresentation getImageRep()
    {
    return super.getImageRep();
    }

    protected sun.awt.image.ImageRepresentation makeImageRep()
    {
    return null;
    }

    }

    class StubGraphics extends Graphics {

    private void imageCreate( ImageRepresentation ir )
    {
    // !!!
    throw new InternalError( “not implemented” );
    }

    public StubGraphics( Graphics g )
    {
    }

    public StubGraphics( Image image )
    {
    // !!!
    throw new InternalError( “not implemented” );
    }

    // Create a new Graphics Object based on this one.
    public Graphics create()
    {
    StubGraphics g = new StubGraphics( this );
    return g;
    }

    public void translate( int x, int y )
    {
    throw new InternalError( “not implemented” );
    }

    public void dispose()
    {
    // Nothing.
    }

    public Font getFont()
    {
    throw new InternalError( “not implemented” );
    }
    public void setFont( Font font )
    {
    throw new InternalError( “not implemented” );
    }
    public FontMetrics getFontMetrics( Font font )
    {
    throw new InternalError( “not implemented” );
    }
    public Color getColor()
    {
    throw new InternalError( “not implemented” );
    }
    public void setColor( Color c )
    {
    throw new InternalError( “not implemented” );
    }
    public void setPaintMode()
    {
    throw new InternalError( “not implemented” );
    }
    public void setXORMode( Color c )
    {
    throw new InternalError( “not implemented” );
    }

    public Rectangle getClipRect()
    {
    throw new InternalError( “not implemented” );
    }
    public Rectangle getClipBounds()
    {
    throw new InternalError( “not implemented” );
    }
    public void clipRect( int x, int y, int w, int h )
    {
    throw new InternalError( “not implemented” );
    }
    public void setClip( int x, int y, int w, int h )
    {
    throw new InternalError( “not implemented” );
    }
    public Shape getClip()
    {
    throw new InternalError( “not implemented” );
    }
    public void setClip( Shape clip )
    {
    throw new InternalError( “not implemented” );
    }
    public void drawLine( int x1, int y1, int x2, int y2 )
    {
    throw new InternalError( “not implemented” );
    }
    public void fillRect( int x, int y, int w, int h )
    {
    throw new InternalError( “not implemented” );
    }
    public void clearRect( int x, int y, int w, int h )
    {
    throw new InternalError( “not implemented” );
    }
    public void drawString( String str, int x, int y )
    {
    throw new InternalError( “not implemented” );
    }
    public void drawChars( char[] data, int offset, int length, int x, int y )
    {
    throw new InternalError( “not implemented” );
    }
    public void drawBytes( byte[] data, int offset, int length, int x, int y )
    {
    throw new InternalError( “not implemented” );
    }
    public boolean drawImage( Image img, int x, int y, ImageObserver observer )
    {
    throw new InternalError( “not implemented” );
    }
    public boolean drawImage(
    Image img, int x, int y, int width, int height, ImageObserver observer )
    {
    throw new InternalError( “not implemented” );
    }
    public boolean drawImage(
    Image img, int x, int y, Color bg, ImageObserver observer )
    {
    throw new InternalError( “not implemented” );
    }
    public boolean drawImage(
    Image img, int x, int y, int width, int height, Color bg,
    ImageObserver observer )
    {
    throw new InternalError( “not implemented” );
    }
    public boolean drawImage(
    Image img, int dx1, int dy1, int dx2, int dy2, int sx1, int sy1,
    int sx2, int sy2, ImageObserver observer )
    {
    throw new InternalError( “not implemented” );
    }
    public boolean drawImage(
    Image img, int dx1, int dy1, int dx2, int dy2, int sx1, int sy1,
    int sx2, int sy2, Color bgcolor, ImageObserver observer)
    {
    throw new InternalError( “not implemented” );
    }

    public void copyArea( int x, int y, int w, int h, int dx, int dy )
    {
    throw new InternalError( “not implemented” );
    }
    public void drawRoundRect( int x, int y, int w, int h, int arcWidth, int arcHeight )
    {
    throw new InternalError( “not implemented” );
    }
    public void fillRoundRect( int x, int y, int w, int h, int arcWidth, int arcHeight )
    {
    throw new InternalError( “not implemented” );
    }
    public void drawPolygon( int[] xPoints, int[] yPoints, int nPoints )
    {
    throw new InternalError( “not implemented” );
    }
    public void fillPolygon( int[] xPoints, int[] yPoints, int nPoints )
    {
    throw new InternalError( “not implemented” );
    }
    public void drawOval( int x, int y, int w, int h )
    {
    throw new InternalError( “not implemented” );
    }
    public void fillOval( int x, int y, int w, int h )
    {
    throw new InternalError( “not implemented” );
    }
    public void drawArc( int x, int y, int w, int h, int startAngle, int endAngle )
    {
    throw new InternalError( “not implemented” );
    }
    public void fillArc( int x, int y, int w, int h, int startAngle, int endAngle )
    {
    throw new InternalError( “not implemented” );
    }
    public void drawPolyline( int[] xPoints, int[] yPoints, int nPoints )
    {
    throw new InternalError( “not implemented” );
    }

    }

    #229564 Reply

    Ivar Vasara
    Member

    The type MainFrame must implement the inherited abstract method

    umm, that means you have to implement the stated methods.. look up what it means for a class to be “abstract”.

Viewing 2 posts - 1 through 2 (of 2 total)
Reply To: compile errors from 2 .java files ?

You must be logged in to post in the forum log in