Skip to content

ThomasLucereau/Cpp_JavaSwing_Data_Viewer

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

11 Commits
 
 
 
 

Repository files navigation

INF224 – Multimedia Project (C++ & Java Swing)

This project was developed as part of the INF224 – Object-Oriented Programming course

It consists of two main parts:

  • A C++ multimedia server managing photos, videos, and films.
  • A Java Swing graphical interface acting as a remote control client.

Part 1 – C++ Multimedia Server

  • Implements a hierarchy of multimedia objects: Photo, Video, Film.
  • Manages groups of objects using STL containers and smart pointers.
  • Stores/retrieves objects in a database using std::map.
  • Handles serialization/deserialization for persistence.
  • Includes a TCP server to handle client commands: search, display, play.
  • Robust memory management and error handling.

Part 2 – Java Swing Remote Control

The Java part provides a GUI that communicates with the C++ server. It was implemented step by step:

  1. Main Window: A JFrame containing a JTextArea and three buttons (append text, append other text, quit).
  2. Menus and Toolbar: A JMenuBar and JToolBar using AbstractAction to avoid code duplication and allow keyboard shortcuts.
  3. Client/Server Interaction: Integration with the C++ multimedia server via TCP. The GUI can search for multimedia objects and trigger playback remotely.
  4. Makefile: Both the C++ and Java parts include a Makefile, allowing compilation and execution with:
    make run

Project Structure

  • cpp/: C++ multimedia server
  • swing/: Java Swing GUI (remote control)
  • README.html: Project description and instructions

Build & Run

To build and run each part:

cd cpp
make run    # builds and runs the C++ server

cd ../swing make run # builds and runs the Java Swing client

Documentation

  • C++ code documented with Doxygen.
  • Java code documented with Javadoc.

Next Steps

Possible improvements:

  • Enhanced GUI with tabs (JTabbedPane), dialogs (JDialog), or radio buttons.
  • Additional remote control features (custom commands, playlists, etc.).

About

PROJ INF224

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published