
// DO NOT EDIT THIS FILE - it is machine generated -*- c++ -*-

#ifndef __gnu_javax_print_PrinterDialog$AppearancePanel$SidesPanel__
#define __gnu_javax_print_PrinterDialog$AppearancePanel$SidesPanel__

#pragma interface

#include <javax/swing/JPanel.h>
extern "Java"
{
  namespace gnu
  {
    namespace javax
    {
      namespace print
      {
          class PrinterDialog$AppearancePanel;
          class PrinterDialog$AppearancePanel$SidesPanel;
      }
    }
  }
  namespace java
  {
    namespace awt
    {
      namespace event
      {
          class ActionEvent;
      }
    }
  }
  namespace javax
  {
    namespace swing
    {
        class JRadioButton;
    }
  }
}

class gnu::javax::print::PrinterDialog$AppearancePanel$SidesPanel : public ::javax::swing::JPanel
{

public: // actually package-private
  PrinterDialog$AppearancePanel$SidesPanel(::gnu::javax::print::PrinterDialog$AppearancePanel *);
public:
  void actionPerformed(::java::awt::event::ActionEvent *);
public: // actually package-private
  void updateForSelectedService();
private:
  ::javax::swing::JRadioButton * __attribute__((aligned(__alignof__( ::javax::swing::JPanel)))) oneside;
  ::javax::swing::JRadioButton * calendar;
  ::javax::swing::JRadioButton * duplex;
public: // actually package-private
  ::gnu::javax::print::PrinterDialog$AppearancePanel * this$1;
public:
  static ::java::lang::Class class$;
};

#endif // __gnu_javax_print_PrinterDialog$AppearancePanel$SidesPanel__
